如何更改cakephp default.ctp布局目录?

如何更改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... } } 在这里我改变了布局!!但问题是此布局不是默认布局。我想将

单独使用控制器,我可以更改cakephp的默认布局

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(“自定义”)方法来设置布局。