Добрый день.
У Вас есть выпадающий список
<select name="spjax" id="spjax">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Где-то в другом месте страницы есть блок, который надо обновить. При обновлении к заголовку необходимо добавить значение переменной $Ipjax. Оборачиваем этот блок Pjax и добавляем пользовательский js.
<?php
Pjax::begin([
'id' => 'view-mode-pjax'
])
?>
<div class="col-lg-4">
<h2>Heading <?= $Ipjax ?></h2>
<p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et
dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip
ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur.</p>
<p><a class="btn btn-default" href="http://www.yiiframework.com/doc/">Yii Documentation »</a></p>
</div>
<?php
Pjax::end();
$this->registerJs("
$(function(){
$('#spjax').on('change', function(){
var Id = $(this).val()
console.log(Id)
$.pjax.reload({
container: \"#view-mode-pjax\", // контейнер, в котором надо обновить данные.
url: window.location.href,
timeout: 0,
data: {
'id': Id // данные, которые отправляются на сервер.
},
});
})
})
", View::POS_END)
?>
А в контроллере, в действии, которое подключает данный вид передаёте нужную переменную.
public function actionIndex()
{
$Ipjax = Yii::$app->request->get('id') ?: null;
return $this->render('index', ['Ipjax' => $Ipjax]);
}
Отлавливаете изменение выпадающего списка и запускаете pjax. Идёт запрос на сервер, проверяется переменная и возвращается всё тот же вид, но уже с переменной.
И Pjax, ушлый зверёк, обновит не всю страницу, а только тот блок, который Вы укажите.
p.s. Пример сделан на yii2-basic, в файле views/index и в DefaultController.