В Yii2, когда вы вызываете метод goBack()
для перенаправления пользователя на предыдущую страницу, URL автоматически берется с помощью функции Url::previous()
. Если вы хотите изменить URL при использовании goBack()
, вам нужно переопределить значение, которое возвращает функция Url::previous()
.
Вы можете сделать это следующим образом:
- Создайте новый класс в конфигурационном файле вашего приложения, например,
appcomponentsCustomUrlManager
:
namespace appcomponents; use yiihelpersUrl; class CustomUrlManager extends yiiwebUrlManager { public function createUrl($params) { if (isset($params['changeUrl'])) { // Ваша логика замены URL $customUrl = 'new-url'; unset($params['changeUrl']); return Url::to([$customUrl] + $params); } return parent::createUrl($params); } }
- В конфигурационном файле приложения (обычно
config/web.php
), замените компонентurlManager
на только что созданныйCustomUrlManager
:
'components' => [ 'urlManager' => [ 'class' => 'appcomponentsCustomUrlManager', // свои настройки urlManager ], // другие компоненты ],
- Теперь в коде вашего контроллера, когда вы запускаете
goBack()
, добавьте параметрchangeUrl
, чтобы сигнализировать вашемуCustomUrlManager
, что URL должен быть изменен:
public function actionSomeAction() { // ваш код контроллера return $this->goBack(['changeUrl' => true]); }
Теперь, при вызове goBack()
, URL будет изменен в соответствии с вашей логикой в методе createUrl()
вашего CustomUrlManager
.