我想根据用户是否登录向他们显示不同的导航栏。我已经处理了注册和登录阶段,但无法检查用户是否已登录并显示正确的导航栏。
这就是我所拥有的AppController.php
:
public $components = array('Session', 'Auth' => array(
'loginRedirect' => array('controller' => 'users', 'action' => 'account'),
'logoutRedirect' => array('controller' => 'pages', 'action' => 'home')
));
public $loggedIn = false;
public function beforeFilter() {
$this->Auth->allow('home', 'register', 'login');
if ($this->Auth->user('id')) {
$this->set('loggedIn', true);
}
}
然后在我的布局中(不是视图):
<?php if ($loggedIn): ?>
logged in
<?php else: ?>
<li class="right"><a href="/register">Register</a></li>
<li class="right"><a href="/login">Login</a></li>
<?php endif; ?>
然而,$loggedIn
总是假的。如果$this->set('loggedIn', $this->loggedIn);
从我的个人控制器中执行它可以正常工作,但是为了保持我的代码干燥,我只希望它在我的所有其他控制器从 ( AppController
) 继承的控制器中。
有没有一种我想念的简单方法来做到这一点?