Как поменять url в yii2 при использование goBack()?

В 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.