В Yii2, когда вы вызываете метод goBack()
для перенаправления пользователя на предыдущую страницу, URL автоматически берется с помощью функции Url::previous()
. Если вы хотите изменить URL при использовании goBack()
, вам нужно переопределить значение, которое возвращает функция Url::previous()
.
Вы можете сделать это следующим образом:
1. Создайте новый класс в конфигурационном файле вашего приложения, например, 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); } }
2. В конфигурационном файле приложения (обычно config/web.php
), замените компонент urlManager
на только что созданный CustomUrlManager
:
'components' => [ 'urlManager' => [ 'class' => 'appcomponentsCustomUrlManager', // свои настройки urlManager ], // другие компоненты ],
3. Теперь в коде вашего контроллера, когда вы запускаете goBack()
, добавьте параметр changeUrl
, чтобы сигнализировать вашему CustomUrlManager
, что URL должен быть изменен:
public function actionSomeAction() { // ваш код контроллера return $this->goBack(['changeUrl' => true]); }
Теперь, при вызове goBack()
, URL будет изменен в соответствии с вашей логикой в методе createUrl()
вашего CustomUrlManager
.