CakePHP3如何使用2个默认布局

CakePHP3如何使用2个默认布局,php,cakephp,cakephp-3.0,Php,Cakephp,Cakephp 3.0,我在CakePHP3项目上工作,我想为管理员使用另一个默认布局 所以在登录操作中,如果它是Admin,我会将它重定向到dashboard Admin,它应该有另一个默认布局 public function login() { if ($this->request->is('post')) { $user = $this->Auth->identify(); if ($user) { $this->

我在CakePHP3项目上工作,我想为管理员使用另一个默认布局

所以在登录操作中,如果它是Admin,我会将它重定向到dashboard Admin,它应该有另一个默认布局

  public function login()
    {
    if ($this->request->is('post')) {
        $user = $this->Auth->identify();

    if ($user) {
            $this->Auth->setUser($user);
             if($user('role')=== 'admin')
                return $this->redirect(['controller' => 'admin', 'action' => 'dashboard']);
            return $this->redirect($this->Auth->redirectUrl());
        }
        $this->Flash->error(__('Invalid username or password, try again'));
        return $this->redirect(['action' => 'home', 'controller' => 'pages']);
    }
}
但是,如何指定控制器
admin
将使用另一个默认布局,而不仅仅是通过使用以下命令在操作中指定:

   //admin controller 
   public action dashboard(){
    $this->layout='default2';
     //...
}

在CakePHP 3.1之前,必须使用以下内容:

$this->layout='admin'

在CakePHP 3.1之后,您必须使用以下内容:


$this->viewBuilder()->布局('admin')

在CakePHP 3.1之前,必须使用以下内容:

$this->layout='admin'

在CakePHP 3.1之后,您必须使用以下内容:


$this->viewBuilder()->布局('admin')

要更改默认布局,请在您的
AppController
AdminController
筛选方法之前添加布局更改

public function beforeFilter(Event $event){
    $this->viewBuilder()->layout('admin');
}
用于更改单个布局

public function login()
{
   $this->viewBuilder()->layout('login');
}

要更改默认布局,请在
AppController
AdminController
beforeFilter方法中添加布局更改

public function beforeFilter(Event $event){
    $this->viewBuilder()->layout('admin');
}
用于更改单个布局

public function login()
{
   $this->viewBuilder()->layout('login');
}

如何将其应用于所有操作而不仅仅是一个操作?如何将其应用于所有操作而不仅仅是一个操作?如何仅将其应用于一个控制器而不是所有控制器them@kh.tab在该控制器中添加beforeFilter方法如何仅对一个控制器而不是所有控制器应用此方法them@kh.tab在该控制器中添加beforeFilter方法