CakePHP3如何使用2个默认布局
我在CakePHP3项目上工作,我想为管理员使用另一个默认布局 所以在登录操作中,如果它是Admin,我会将它重定向到dashboard Admin,它应该有另一个默认布局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->
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方法