如何更改cakephp default.ctp布局目录?
单独使用控制器,我可以更改cakephp的默认布局如何更改cakephp default.ctp布局目录?,cakephp,Cakephp,单独使用控制器,我可以更改cakephp的默认布局 public function login() { $this->layout="make"; //here I have changed layout for single action if ($this->request->is('post')) { //some code... } } 在这里我改变了布局!!但问题是此布局不是默认布局。我想将
public function login() {
$this->layout="make"; //here I have changed layout for single action
if ($this->request->is('post')) {
//some code...
}
}
在这里我改变了布局!!但问题是此布局不是默认布局。我想将此布局应用于所有控制器。如何执行此操作?在您的AppController中
public function beforeRender() {
parent::beforeRender();
$this->layout = 'custom';
}
这个答案可能不再适用于CakePHP 3.0.5。它需要一个事件对象作为beforeRender()函数中的参数 尝试更改控制器本身中的$layout属性
public $layout = 'non-default'
将控制器定义的所有视图使用的布局更改为src/Template/layout/non-default。从CakePHP 3.1开始,视图布局已更改:
// In a controller, instead of
$this->layout = 'advanced';
// You should use
$this->viewBuilder()->layout('advanced');
在CakePHP 3.6.2中,您不能使用
$this->layout
,因为它已被弃用。试试下面的代码
$this->viewBuilder()->setLayout('LAYOUT_NAME');
在AppControllert中执行此操作此答案非常完美,但在3.4版(我正在使用)中,此选项已被弃用,您必须使用$this->viewBuilder()->setLayout(“自定义”)方法来设置布局。