我在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';
//...
}
答案 0 :(得分:2)
在CakePHP 3.1之前,您必须使用以下内容:
$this->layout = 'admin';
在CakePHP 3.1之后,您必须使用以下内容:
$this->viewBuilder()->layout('admin');
答案 1 :(得分:2)
对于更改默认布局,请在AppController
或AdminController
beforeFilter method
中添加布局更改。
public function beforeFilter(Event $event){
$this->viewBuilder()->layout('admin');
}
更改个人布局
public function login()
{
$this->viewBuilder()->layout('login');
}