Итак, у нас есть несколько контроллеров. Например, это будут AboutController, IndexController, AuthController и ContactController. Все они расширяют пользовательские AbstractController что Init() метод:Yii2, перенаправление после входа в систему. Избегание контроллера действие поведение
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
.
Итак, вопрос в том, как ... Как избежать какого-либо контроллера \ action \ поведения в методе init(), или, может быть, кто-то может предложить лучшее решение этого вопроса.
Он дублируют: http://stackoverflow.com/questions/24100608/redirect-user-to-previous-page-after-auth-yii2 – TomaszKane
@TomaszKane нет никакого решения для него , – user1954544