我知道我可以通过在Elements文件夹中创建类似custom_flash.ctp
的内容来替换flash标记,并将其命名为:
$this->Session->setFlash('Hello', custom_flash)
但是如何在不添加第二个参数时使用自定义布局?
$this->Session->setFlash('Hello')
我认为我可以通过在Elements文件夹中包含名为default.ctp
的文件来替换默认值。但我不能。
我希望尽可能缩短代码。这就是为什么我正在寻找一种方法来做到这一点
任何解决方案?感谢
答案 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
上有解释