CakePHP3如何使用2个默认布局

时间:2016-04-18 09:03:38

标签: php cakephp cakephp-3.0

我在cakePHP 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';
     //...
}

2 个答案:

答案 0 :(得分:2)

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

$this->layout = 'admin';

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

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

答案 1 :(得分:2)

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

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

更改个人布局

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