我想使用'login / register'& 'logout'链接如下图所示 - 。这里我使用自定义模板主题,所以,我不想使用默认导航栏。但我想使用Yii2的默认登录&注销功能。为此,我在'layouts / main.php'中使用以下代码 -
<?php
if (Yii::$app->user->isGuest) {
echo '<h2><a href="index.php?r=site/login">Login </a><a href="index.php?r=site/signup">Register</a></h2>';
} else {
echo '<h2><a href="index.php?r=site/index">Logout</a></h2>';
}
?>
通常,我的方案是 - 首先,如果用户没有登录,它将显示“登录/注册”链接。成功登录后,它将显示“注销”链接而不是“登录/注册”。然后,在点击“注销”链接后,它应该通过注销显示“登录/注册”。
但是这个代码的问题是,在登录后,它会显示一个修复“注销”链接,如下所示 - ,即使我们点击“注销”,它也不会改回“登录/注册” 。页面刷新&amp;再次显示'退出'。它仍然固定为'logout',直到我们清除浏览器的coockies,缓存。
所以,请帮我解决。
答案 0 :(得分:2)
您需要将href从site/index
替换为site/logout
else {
echo '<h2><a data-method="post" href="index.php?r=site/logout">Logout</a></h2>';
}
除了直接编写href,使用Url::to()
方法,它更灵活,如果您决定使用漂亮的网址,它会自动为您处理,您的链接将来自 index.php ?r = site / logout 到 site / logout 而不更改任何代码。
else {
echo '<h2><a data-method="post" href="' . Url::to(['site/logout']) . '">Logout</a></h2>';
}