0

我知道我可以通过custom_flash.ctp在 Elements 文件夹中创建类似的东西来替换 Flash 标记,并将其称为:

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

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

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

default.ctp我想我可以通过在 Elements 文件夹中命名一个文件来替换默认值。但我不能。

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

有什么解决办法吗?谢谢

4

3 回答 3

4

尝试创建您的组件:

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

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

public $components = array('MySession');
$this->MySession->setFlash('Hello');
于 2013-05-30T09:20:53.687 回答
3

我从这个问题中找到了答案。

我们需要将此代码添加到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

于 2013-05-30T04:41:53.373 回答
0

这在 cakephp 网站上进行了解释

于 2013-11-21T22:29:53.117 回答