我可以为单个记录设置viewVars并成功发送邮件。当我想发送包含多条记录的电子邮件时,会出现问题。我找到了正确的记录,我可以将它们传递给我的邮件功能。问题在于,当我调试传递给邮件模板的数组时,我得到了一个
Notice (8): Undefined variable: vars [APP\View\Emails\html\latest_projects.ctp, line 1]
然而,就在错误之下,它确实显示了我想要的信息:
(int) 0 => array(
'Project' => array(
'id' => '809',
'created' => '2014-04-23',
'project_number' => 'SPN00000809',
)
),
(int) 1 => array(
'Project' => array(
'id' => '810',
'created' => '2014-04-23',
'project_number' => 'SPN00000810',
)
)
*为简洁起见,省略了某些字段。
如何在电子邮件模板中循环显示此数组?我已经像在视图中那样尝试了标准的foreach循环,但后来我得到了未定义的变量提供了foreach问题。有什么建议或意见吗?
答案 0 :(得分:1)
//Pass your variable
$Email->viewVars(array('projects' => $projects));
//In your email body or template
<ul>
<?php foreach ($projects as $project) { ?>
<li><?php echo $project['Project']['project_number']; ?></li>
<?php } ?>
</ul>
答案 1 :(得分:0)
像documentation中所述: -
$Email->viewVars(array('value' => 12345));
您将能够在邮件模板中将其用作$ value。
就像将数组设置为'value'一样,您将能够将$ value用作数组。
答案 2 :(得分:0)
问题是数组传递了$ dataForView,它是由cake生成的,是一个组合(?)数组 - 意味着某些键是关联的,例如$ dataForView [&#39; content&#39;] =&gt ; &#39;&#39;,而其他键是(int)0 =&gt;阵列(); 收到的数组看起来像这样:
array(
content => '',
(int) 0 => array(
Project => array(
fieldName1 => value,
fieldName2 => value
)
),
(int) 1 => array(
Project => array(
fieldName1 => value,
fieldName2 => value
)
)
)
我发现如果我取消设置关联键(内容),我可以按照惯例循环遍历规范化数组。我是这样做的,它可能不是最好的方式,但它有效。
//remove associative key
unset($dataForView['content']);
//loop through array and output values
foreach($dataForView as $key=>$val):
echo $val['Project']['id']; //echo other info as well
endforeach;
debug($dataForView);
谢谢大家的帮助。