CakePHP - 更改默认Flash布局

时间:2013-05-30 02:49:02

标签: cakephp cakephp-2.0

我知道我可以通过在Elements文件夹中创建类似custom_flash.ctp的内容来替换flash标记,并将其命名为:

$this->Session->setFlash('Hello', custom_flash)

但是如何在不添加第二个参数时使用自定义布局?

$this->Session->setFlash('Hello')

我认为我可以通过在Elements文件夹中包含名为default.ctp的文件来替换默认值。但我不能。

我希望尽可能缩短代码。这就是为什么我正在寻找一种方法来做到这一点

任何解决方案?感谢

3 个答案:

答案 0 :(得分:4)

尝试创建您的组件:

class MySessionComponent extends Session {
    public function setFlash($message) {
         return $this->setFlash($message, 'custom_flash');
    }
}

而不是在你的控制器中使用:

public $components = array('MySession');
$this->MySession->setFlash('Hello');

答案 1 :(得分:3)

我从this question找到答案。

我们需要在app/Controller/AppController.php

中添加此代码
function beforeRender(){
    if ($this->Session->check('Message.flash')) {
        $flash = $this->Session->read('Message.flash');

        if ($flash['element'] == 'default') {
            $flash['element'] = 'fileNameOfYourCustomFlash';
            $this->Session->write('Message.flash', $flash);
        }
    }
}

它基本上在element中添加flash参数,当它还不存在时。

答案 2 :(得分:0)

这在cakephp网站here

上有解释