我在我的AppController中设置一个变量'$ loggedIn',以便全局访问以识别登录用户,但只有在我的url调用Users控制器时才会生效。例如,如果您使用url访问users / index,则表明您已登录。如果我访问pages / home,则不会显示登录。在appcontroller和我的视图中的代码(default.ctp)。
控制器/ AppController.php
public function beforeFilter() {
$this->Auth->allow('index', 'view');
$this->set('loggedIn', $this->Session->read('Auth.User'));//fix here
}
查看/布局/ default.thtml中
<div id="header">
<div class="top-links">
<?php if($loggedIn) { //fix here
echo $this->Html->link('Register', array('controller'=>'users','action'=>'register'));
echo ' | ';
echo $this->Html->link('Login', array('controller'=>'users','action'=>'login'));
} else {
echo $this->Html->link('My Profile', array('controller'=>'users', 'action' => 'edit', $loggedIn['User']['id']));//fix here
echo $this->Html->link('Logout', array('controller'=>'users','action'=>'logout'));
}
?>
</div>
<a href="/cake"><img src="/img/logo.png" class="top-logo" /></a>
<?php
echo $this->element('top_menu');
?>
</div>
答案 0 :(得分:2)
你可能在PagesController中覆盖了beforeFilter。为了让PagesController继续使用AppController-&gt; beforeFilter代码,你需要在PagesController中使用它:
function beforeFilter() {
parent::beforeFilter();
//rest of the code for this function
}