我想根據用戶是否登錄來向用戶顯示不同的導航欄。我已經處理註冊和登錄階段,但無法檢查用戶是否已登錄並顯示正確的導航欄。檢查用戶是否使用CakePHP登錄
這是我在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
)。
有沒有簡單的方法來做到這一點,我失蹤了?
你不應該傳遞變量到視圖中beforeFilter - 使用beforeRender代替 – mark 2012-07-10 21:49:41