CakePHP(2.x)根据条件修改布局

时间:2013-04-17 10:38:57

标签: php layout cakephp-2.1

是否可以在CakePHP v 2.x中根据条件修改默认布局(default.ctp) - 例如,如果用户已登录。 我们假设我有一个菜单:

“主页”“菜单项1”“菜单项2”

我想在用户登录后更改此内容:

“主页”“菜单项1”“菜单项2”“菜单项3”“菜单项4”

在哪里/如何实现这一目标?我假设我必须调用“$ this-> layout('new-layout');”在某个地方,但我不确定究竟在哪里。

由于

2 个答案:

答案 0 :(得分:2)

如果您的两个布局(登录之前/之后)之间的差异太大,那么制作两个布局&如果用户已登录,则在AppController中(在beforeFilter函数中)更改布局。

if($this->Auth->user()){
    $this->layout = "new_layout";
}

如果只是一些菜单链接。您可以直接将条件放在default.ctp文件中。

if ($this->Session->read('Auth.User')){
 //Add more menu for logged in users.
}

答案 1 :(得分:0)

如果我的记忆正确地为我服务,你应该能够使用相同的布局:

-- Menu Item 1
-- Menu Item 2
if ($authUser) {
  -- Menu Item 3
  -- Menu Item 4
}

您必须在控制器中设置以下内容:

$this->set('authUser', $this->Auth->user());

自从我使用Cake之后已经有一段时间了!