Yii2,登录后重定向。避免控制器\动作\行为

时间:2015-01-14 10:13:49

标签: php yii2

所以我们有一些控制器。例如,它将是AboutController,IndexController,AuthController和ContactController。它们都扩展了具有init()方法的自定义AbstractController:

public function init()
{
    if ($this->getUniqueID() != 'auth') {
        Yii::$app->getUser()->setReturnUrl(Yii::$app->getRequest()->url);
    }

    parent::init();
}

此init()将当前url保存为returnUrl。这样做的影响是在用户登录页面后重定向(某种替代的ajax登录)。

你可以避免“AuthController”,但我对另一件事有疑问 - 这是行为。

在ContactController中(与Yii2的基本设置相同),我们有行为'CaptchaAction'。因此,当我们打开/contact/index时,我们的returnUrl将为/contact/captcha?xxxx,登录后我们将被重定向到/contact/captcha?xxxx),这是一个问题。

在此示例中,我使用$this->getUniqueID()$this->id,但是当(关于手动)我尝试使用$this->action时,它会始终返回null

所以,问题是......如何在init()方法中避免某些控制器\动作\行为,或者有人可以建议更好地解决这个问题。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用beforeAction和init()

我的建议是保持你的init()逻辑,并为你的contactAction设置一个beforeAction。

查看此Link