1

在 CakePhp 2.0 中,使用 CakeEmail 新组件似乎不输出 flash 消息:在我的控制器中,我输入:

$email = new CakeEmail(array('log'=>true));
$email->transport('Debug');

在我看来

 echo $this->Session->flash('email');

但是什么都没有打印出来。在 2.0 中是否删除了该功能(闪存)?

4

4 回答 4

2

蛋糕电子邮件库或组件或传输类都不会触及会话或编写任何此类闪存内容。据我所知,他们从来没有做过。但他们将电子邮件内容作为 DebugTransport 的数组返回。

所以你会想要获取返回的数组并将其记录下来:

$res = $this->Email->send();
$this->Session->setFlash($res ? 'Email sent' : 'Email not sent');

或类似的东西。

于 2012-09-24T10:05:50.900 回答
1

当然,cakephp 2.0 中有 flash 功能,详情请查看:http: //book.cakephp.org/2.0/en/core-libraries/components/sessions.html

如果你想在你的视图中获得你的 flash 消息,你必须首先在你的 Controller 动作中设置它。

//controller
$this->Session->setFlash('email');

//view
echo $this->Session->flash();

// 上面会输出。

<div id="flashMessage" class="message">
'email'.
</div>
于 2012-09-24T13:06:18.910 回答
0

在 Cake 2.x 中,调试传输不会在会话中设置电子邮件内容。只需检查返回值,$contents = $email->send();. $contents 将包含标题和消息,因此请根据需要使用它们。

于 2012-09-24T14:08:08.267 回答
0
$response = $Email->send();

$response['headers']; // headers as string
$response['message']; // message body with attachments

$this->Session->setFlash($response['headers'].$response['message']);

确保您的布局文件中有以下内容。

echo $this->Session->flash();
于 2013-09-28T12:23:41.333 回答