在CakePHP 2.0中,我可以使用
检查是否有flash消息if($session->check('Message.flash')){...}
据我所知,在CakePHP 3.0中,我读了doc,我可以通过
检查是否有flash消息布局
echo $this->Flash->render('auth');
模板/用户/登录
echo $this->Flash->render();
if($this->request->is('flash')){...}else{...}
但在我看来,当我添加上述条件时没有显示任何内容。我的控制器代码在
之下$this->Flash->error('The email address and/or password you specified are not correct.');
return $this->redirect(array('controller'=>'users', 'action' => 'login'));
有人能指出我还缺少什么吗?我想检查CakePHP 3.0中是否显示了flash消息。感谢。
答案 0 :(得分:1)
通常我做的是,我为所有异常创建自定义Flash消息。
在Template / Elemen / Flash中custom_error.ctp
在您的控制器中:
$this->Flash->customError('A message... ',['key' => 'cutom_error_key',]);
在视图/模板中:
$this->Flash->render('custom_error_key');
答案 1 :(得分:0)
你仍然可以通过CakePHP 2方式从会话中读取此值。您可以通过请求对象访问布局中的会话。
$session = $this->request->session();
if ($session->check('Flash.flash')) {...}
或者如果你想检查是否有“auth”密钥消息:
if ($session->read('Flash.flash.key' == 'auth')) {...}
如果你想做其他事情,这就是会话数组现在用Flash看的方式:
[
...
'Flash' => [
'flash' => [
'message' => 'The page has been saved.',
'key' => 'flash',
'element' => 'Flash/success',
'params' => []
]
]
...
]
答案 2 :(得分:-1)
在Controller动作中
$this->Flash->success(__('The data has been saved.'));
OR
$this->Flash->error(__('The data could not be saved. Please, try again.'));
放置在视图或布局文件中的任何位置
<?php
$class = 'message';
if (!empty($params['class'])) {
$class .= ' ' . $params['class'];
}
?>
<div class="<?= h($class) ?>"><?= h($message) ?></div>