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


CakePHP (2.x) modify layout based on conditions

这是可能的,在CakePHP v2。X根据条件修改默认布局(default.ctp),例如用户是否已登录。假设我有一个菜单:

"主页" "菜单项1" "菜单项2"

并且我想在用户登录到

后更改此设置:

"主页" "菜单项1" "菜单项2" "菜单项3" "菜单项4"

我可以在哪里/如何做到这一点?我想我必须在某个地方调用"$this->layout('new-layout');",但我不确定确切的位置。

谢谢

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

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

如果只是关于一些菜单链接。您可以直接将condition设置为默认值。ctp文件。

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

如果我没记错的话,你应该可以使用相同的布局,只需使用:

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

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

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

我已经有一段时间没有使用蛋糕了!