CakePHP3如何使用2个默认布局


CakePHP3 how to use 2 default layout

我在cakeHP 3项目上工作,我想为Admin使用另一个默认布局。。

因此,在登录操作中,如果是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';
     //...
}

要更改默认布局,请在AppControllerAdminController beforeFilter method中添加布局更改。

public function beforeFilter(Event $event){
    $this->viewBuilder()->layout('admin');
}

用于更改单个布局

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

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

$this->layout = 'admin';

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

$this->viewBuilder()->layout('admin');