Yii2自定义登录注销

时间:2016-01-22 07:24:37

标签: php yii2 yii2-advanced-app

我想使用'login / register'& 'logout'链接如下图所示 - login/register snap。这里我使用自定义模板主题,所以,我不想使用默认导航栏。但我想使用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>';
            }
        ?>

通常,我的方案是 - 首先,如果用户没有登录,它将显示“登录/注册”链接。成功登录后,它将显示“注销”链接而不是“登录/注册”。然后,在点击“注销”链接后,它应该通过注销显示“登录/注册”。

但是这个代码的问题是,在登录后,它会显示一个修复“注销”链接,如下所示 - snap with 'logout',即使我们点击“注销”,它也不会改回“登录/注册” 。页面刷新&amp;再次显示'退出'。它仍然固定为'logout',直到我们清除浏览器的coockies,缓存。

所以,请帮我解决。

1 个答案:

答案 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>';
}
相关问题