Как запретить pjax yii2 менять url?

В Yii2 для отключения изменения URL при использовании pjax, необходимо выполнить несколько шагов.

Шаг 1: В контроллере, где вы используете pjax, установите свойство updateUrl в значение false. Например:

use yiiwebController;

class YourController extends Controller
{
    public function actionYourAction()
    {
        $this->getView()->registerJs(['$.pjax.defaults.updateUrl' => false]);

        // Ваш код

        return $this->render('your-view');
    }
}

Здесь мы регистрируем JavaScript код с помощью метода registerJs(), устанавливающий значение updateUrl в false. Это предотвратит обновление адресной строки при использовании pjax.

Шаг 2: Для каждого виджета, который использует pjax, установите свойство clientOptions, и в нем задайте опцию push. Например:

use yiiwidgetsPjax;

Pjax::begin([
    'clientOptions' => [
        'push' => false,
    ],
]);

Здесь мы устанавливаем опцию push в значение false для виджета pjax. Это также предотвратит изменение URL при обновлении содержимого через pjax.

Шаг 3: Не забудьте активировать pjax в вашем представлении. Добавьте следующий код в ваш шаблон:

use yiiwidgetsPjax;

Pjax::begin();
?>

<!-- Ваш код -->

<?php
Pjax::end();

Здесь мы используем Pjax::begin() и Pjax::end() для определения области, которую нужно обновлять с помощью pjax.

После выполнения этих шагов, изменение URL при использовании pjax должно быть отключено. Пожалуйста, обратите внимание, что это изменение будет действовать только на те виджеты и действия, где вы явно установили свойство updateUrl в false и опцию push виджета pjax в false.