YiiFramework Yii2 вернуться на предыдущую страницу.

Vano

Новичок
в Yii2 есть такой хелпер Url. у него есть 2 метода
PHP:
Url::remember(); - запомнить URL
Url::previous(); - вернуть последний сохраненный URL.
У меня в контроллере есть actionDelete в котором я бы хотел после удаления записи редиректить на предыдущую страницу
PHP:
return $this->redirect([Url::previous()]);
Где мне вызивать Url::remember()? Как это красиво реализовать?
 

Vano

Новичок
А какие варианты?
нуу в beforAction контроллера(но проверять чтобы если actionDelete то не запоминать), behaviors свой создать подключать в контроллере пересчитывая actions для которых нужно запоминание. Во вьюшке прямо забабахать, или в контроллере. хз что еще
 

Vano

Новичок
Слышал правильная программа должна работать и без аякса. То-есть сночала нужно писать будто аякс не используеться.
 

WMix

герр M:)ller
Партнер клуба
Не знаю как там в yii но запомнить request необходимо на предыдущей странице. А на следующей просто вспомнить! Те. Если delete это первоночальный GET ожидающий подтверждение пользователя, отправляемое по средствам POST, на абстрактный удалятель), то можно, к примеру, на первом этапе запомнить а на втором вспомнить.

А можно просто помнить всегда последний список и возвращаться (вспоминать) на него только после удаления

Бабахать конечно в контроллере
 
Последнее редактирование:
  • Like
Реакции: AmdY

grigori

( ͡° ͜ʖ ͡°)
Команда форума
вопрос не очень касается yii, оставим его в стороне,
удаление - это изменение данных, по протоколу 2616 его надо выполнять post-запросом,
и в ответ на post-запрос при обычном запросе принято возвращать 303 See Other

если мы делаем ajax, после удаления сервер вернет, например, "OK" и при получении этого в JS делается редирект window.location.href=...

хелпер Url - тупо обертка над $_SESSION,
соответственно, к http://www.yiiframework.com/doc-2.0/yii-helpers-url.html вопрос отношения не имеет,
все, что можно сделать хелпером - передать в JS значение предыдущего URL
Код:
var previous_url = '<?=yii\helpers\Url::previous()?>';
и на нее уже в JS редиректить при получении успешного ответа после удаления
 
Последнее редактирование:

Vano

Новичок
Код:
return $this->redirect(Yii::$app->request->referrer);
Url::remember немного для извращения) чтобы можно было походить по сайту, а потом вернуться на страницу где сохранили юрл.
К примеру в магазине ищем товары, заходим на товар, отправляем заявку, просматриваем каменты, тудым - сюдым))) и находим кнопку "Вернутся к поиску"
 

vlad-004

Новичок
Код:
return $this->redirect(Yii::$app->request->referrer);
Url::remember немного для извращения) чтобы можно было походить по сайту, а потом вернуться на страницу где сохранили юрл.
К примеру в магазине ищем товары, заходим на товар, отправляем заявку, просматриваем каменты, тудым - сюдым))) и находим кнопку "Вернутся к поиску"
Большое спасибо мне это помогло return $this->redirect(Yii::$app->request->referrer);
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
надо понимать, что реферрер передают не все браузеры, и такое будет работать не у всех
 
Сверху