2016-04-18 62 views
0

我介紹CakePHP 3項目的工作,我想使用管理員其他默認佈局..CakePHP3如何使用2默認佈局

所以在登錄操作,如果它是聯繫,我將其重定向到儀表板管理員至極應該有另一默認​​佈局..

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

爲了改變默認佈局中添加布局更改您的AppControllerAdminControllerbeforeFilter method

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

對於更改單個佈局

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

如何將這僅僅應用於一個控制器而不是所有的控制器 –

+0

@ kh.tab在該控制器中添加beforeFilter方法 – Salines

2

CakePHP的3.1之前,您必須使用以下命令:

$this->layout = 'admin';

CakePHP的3.1之後,你必須使用以下方法:

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

+0

如何申請本作不僅爲一個所有動作? –