0

我能够为单个记录设置 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 问题。有什么意见或建议吗?

4

3 回答 3

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>
于 2014-04-23T17:05:18.247 回答
0

就像文档中所说的那样:-

$Email->viewVars(array('value' => 12345));

您将能够在邮件模板中将其用作 $value。

就像将您的数组设置为“值”一样,您将能够使用 $value 作为数组。

于 2014-04-23T10:32:03.840 回答
0

问题是通过的数组,由 cake 生成的 $dataForView 是一个组合(?)数组 - 这意味着一些键是关联的,例如 $dataForView['content'] => '',而其他键是(int)0 => 数组(); 收到的数组如下所示:

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); 

谢谢大家的帮助。

于 2014-04-24T00:28:55.400 回答