CakePHP-更改默认闪存布局
我知道我可以通过在Elements文件夹中创建类似于CakePHP-更改默认闪存布局,cakephp,cakephp-2.0,Cakephp,Cakephp 2.0,我知道我可以通过在Elements文件夹中创建类似于custom_flash.ctp的东西来替换flash标记,并将其称为: $this->Session->setFlash('Hello', custom_flash) 但是,如果不添加第二个参数,如何使用自定义布局 $this->Session->setFlash('Hello') 我想我可以通过在Elements文件夹中有一个名为default.ctp的文件来替换默认值。但我不能 我希望代码尽可能简短。这就是为什
custom_flash.ctp
的东西来替换flash标记,并将其称为:
$this->Session->setFlash('Hello', custom_flash)
但是,如果不添加第二个参数,如何使用自定义布局
$this->Session->setFlash('Hello')
我想我可以通过在Elements文件夹中有一个名为default.ctp
的文件来替换默认值。但我不能
我希望代码尽可能简短。这就是为什么我在寻找这样做的方法
有解决办法吗?谢谢我从中找到了答案
我们需要在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);
}
}
}
它基本上是在
flash
中添加元素
参数,但它还不存在。尝试创建您的组件:
class MySessionComponent extends Session {
public function setFlash($message) {
return $this->setFlash($message, 'custom_flash');
}
}
在控制器中,只需使用:
public $components = array('MySession');
$this->MySession->setFlash('Hello');
cakephp网站上解释了这一点谢谢您的回答,但是更改
会话
对象将使我更改蛋糕烘焙
中的所有默认代码。不,不会。所有使用$this->Session->someFunction()的“烘焙”代码都将从Cake core执行。所有$this->MySession->someFunction()都将从您的类(扩展会话类)中执行。哦,我明白了,谢谢您的解释。请参阅此以获得更好的答案。看看那个不被接受的。它谈到了别名。请注意,不鼓励这样做,因此答案应该是搜索解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移,这些参考文献往往会过时)。请考虑在这里添加一个独立的概要,保持链接作为参考。这比接受的答案要好得多。创建一个完整的组件只是为了硬编码一个新的默认值,然后必须处理两个不同但基本相同的会话管理器,这时只需向setFlash添加第二个参数就可以完成整个任务。。。只是乱杀滥杀