我想只在用户登录时在导航栏中显示“注销”选项,或者只在导航栏中显示主页、登录和注册选项。但它显示了标题中提到的错误
在应用控制器. php中
public function beforeRender(EventInterface $event)
{
if (is_object($this->Authentication)) {
if ($this->Authentication->user() !== null) {
$this->set("userIsLoggedIn", true);
} else {
$this->set("userIsLoggedIn", false);
}
}
}
在nav.php文件中
<?php if(isset($userIsLoggedIn) && $userIsLoggedIn): ?>
<li class="nav-item">
<?= $this->Html->link(
'Logout',
'/users/logout',
['class' => 'nav-link','target' => '_self']
); ?>
</li>
<?php else: ?>
<li class="nav-item">
<?= $this->Html->link(
'Login',
'/users/login',
['class' => 'nav-link','target' => '_self']
); ?>
</li>
<li class="nav-item">
<?= $this->Html->link(
'Signup',
'/users/signup',
['class' => 'nav-link','target' => '_self']
); ?>
</li>
<?php endif; ?>
1条答案
按热度按时间qgelzfjb1#
您可能看到了错误的文档,特别是属于CakePHP核心的已弃用
Auth
组件的文档。您应该参考新认证插件的文档,其中记录了
Authentication
组件的使用情况。通过Authentication
组件访问用户的方法称为getIdentity
:此外,对于您的特定用例,还有一个视图帮助器,它提供了一种检查用户是否登录的方法。在您的
AppView::initialize()
方法(src/View/AppView.php
)中加载该帮助器:然后,您可以在视图模板中使用它的
isLoggedIn
方法,而无需在控制器中编写更多代码:另请参阅
*身份验证手册〉身份验证组件〉访问登录用户