我正在尝试更改导航栏功能,因此在用户登录后,“注册”和“登录”按钮将被“注销”的单个按钮取代... 我试过这种方式,但没有成功。
C:\ XAMPP \ htdocs中\ jobfinds \ SRC \模板\元素\ menu.ctp
<div class="col_12 column">
<ul class="menu">
<li> Home</li>
<?php if(isset($user['id'])): ?>
<li>Logout</li>
<?php else: ?>
<li>Login</li>
<li> Register</li>
<?php endif ; ?>
</ul>
</div>
我尝试使用
将$ user传递给login方法中的view$this->set('user',$user);
但是menu.ctp无法识别它...... 那我怎么能让它真正起作用呢?
答案 0 :(得分:0)
您需要检查控制器是否$this->Auth->user()
没有返回null,只需设置您想要的任何变量即可。此外,如果要在元素中使用它,则必须确保在所有操作中正确设置此变量。因此,最佳位置将是AppController中的beforeRender()
动作。这是它的样子:
public function beforeRender(Event $event){
/* --- */
if (is_object($this->Auth)) {
if ($this->Auth->user() !== null) {
$this->set("userIsLoggedIn", true);
} else {
$this->set("userIsLoggedIn", false);
}
}
/* --- */
}
在你的元素中:
<?php if(isset($userIsLoggedIn) && $userIsLoggedIn): ?>
<span>User is logged in</span>
<?php else: ?>
<span>User is NOT logged in</span>
<?php endif; ?>