ログインしているかどうかに基づいて、ユーザーに異なるナビゲーション バーを表示したいと考えています。登録とログインの段階を処理しましたが、ユーザーがログインしているかどうかを確認し、正しいナビゲーション バーを表示するのに問題があります。
これは私が持っているものです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
常に false です。個々のコントローラー内から実行すると正常$this->set('loggedIn', $this->loggedIn);
に動作しますが、コードを DRY に保つために、他のすべてのコントローラーが継承するコントローラーにのみ必要です ( AppController
)。
私が見逃しているこれを行う簡単な方法はありますか?