在CakePhp 2.0中,使用CakeEmail新的Component似乎没有输出flash消息: 在我的控制器中,我把:
$email = new CakeEmail(array('log'=>true));
$email->transport('Debug');
在我看来
echo $this->Session->flash('email');
但没有打印出来。 该功能(闪存)是否已在2.0中删除?
答案 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();