CakeEmail:没有渲染Flash消息

时间:2012-09-24 09:57:39

标签: cakephp

在CakePhp 2.0中,使用CakeEmail新的Component似乎没有输出flash消息: 在我的控制器中,我把:

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

在我看来

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

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

4 个答案:

答案 0 :(得分:2)

没有任何蛋糕电子邮件库或组件或传输类触摸会话或写入任何此类Flash内容。他们从来没有做过我知道的事情。 但是他们将电子邮件内容作为DebugTransport的数组返回。

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

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

或者像那样。

答案 1 :(得分: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>

答案 2 :(得分:0)

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

答案 3 :(得分: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();