Проблема с Controller::goBack();

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Dementorpasha
Сообщения: 39
Зарегистрирован: 2013.06.08, 07:33

Проблема с Controller::goBack();

Сообщение Dementorpasha »

Не знаю почему но при вызове в контроллере

Код: Выделить всё

    $this->goBack();
 
Возвращает всегда на домашнюю страницу. А по идеи должна ведь перенаправлять на предыдущую страницу или нет?
/**
* Redirects the browser to the last visited page.
*
Как например сделать кнопку назад если

Код: Выделить всё

  \Yii::$app->user->getReturnUrl();
 
также возвращает ссылку на домашнюю страницу.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Проблема с Controller::goBack();

Сообщение yiijeka »

Сессии нету Yii::$app->getSession() . У меня работает всё .... хотя тоже не работает, в одно место всё время кидает.

p.s заработало когда в контроллере добавил:

Код: Выделить всё

public function afterAction($action, $result)
    {
        Yii::$app->getUser()->setReturnUrl(Yii::$app->request->url);
        return parent::afterAction($action, $result);
    } 
только бойтесь циклической переадресации.
AlexPa
Сообщения: 29
Зарегистрирован: 2011.03.31, 20:49

Re: Проблема с Controller::goBack();

Сообщение AlexPa »

У меня тоже не работает. Всегда возвращает на главную...
по идее должен быть redirect Server[HTTP_REFERER] или нет? Приходится вручную писать $this->redirect()

ЗЫ я javascriptom вызываю location.href = url.
В url делается действие, вызывается $this->goBack() и попадаем на главную, что совсем не ожидалось.
Аватара пользователя
yiijeka
Сообщения: 3103
Зарегистрирован: 2012.01.28, 09:14
Откуда: Беларусь
Контактная информация:

Re: Проблема с Controller::goBack();

Сообщение yiijeka »

В комментариях к коду же написано, заполняйте сами Yii::$app->getUser()->setReturnUrl когда ожидаете вернутся на нужную страницу.

Server[HTTP_REFERER] - может и не быть.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: Проблема с Controller::goBack();

Сообщение slavcodev »

@param string|array $defaultUrl the default return URL in case it was not set previously.
If this is null and the return URL was not set previously, [[Application::homeUrl]] will be redirected to.
Please refer to [[User::setReturnUrl()]] on accepted format of the URL.
Нужно запоминать урл-возврата самостоятельно. Рефирер нельзя юзать по многим причинам, одна из них - подмена заголовка.
Жду Yii 3!
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Проблема с Controller::goBack();

Сообщение vitalik1183 »

А какой тогда смысл в этом методе? Так же можно запомнить урл в той же сессии и сделать редирект.
Yii2!
Аватара пользователя
selfauthor
Сообщения: 26
Зарегистрирован: 2023.10.09, 19:35
Откуда: Москва

Re: Проблема с Controller::goBack();

Сообщение selfauthor »

У меня ситуация такая, что goBack() стоит после процедуры логина. И всё нормально работает. Но весь этот механизм я слизал с тестового проекта, который уже как бы работал после установки yii. Как он это делает, я не понимаю. И нигде не увидел, чтобы где-то выполнялось

Код: Выделить всё

Yii::$app->getUser()->setReturnUrl($this->request->getUrl())
А вот когда попытался сам вызвать goBack(), то тоже переход был только на главную страницу.

Нашёл другой вариант замены:

Код: Выделить всё

$this->redirect(Yii::$app->request->referrer)
Работает.
Ответить