CakePHP 3.0 Flash消息

时间:2015-06-21 10:02:30

标签: php cakephp cakephp-2.0 cakephp-3.0

在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消息。感谢。

3 个答案:

答案 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>