Первое что нам нужно, это подключить сам "Pjax":
use yiiwidgetsPjax;
Далее, обернуть нужный контент в "Pjax" виджет. Например так:
<?php Pjax::begin([ 'id' => 'pjaxContent' ]); ?> Здесь контент <?php Pjax::end(); ?>
Ну а для того чтобы "насильно" обновить нужный нам контент, запускаем в JS следующий код:
$.pjax.reload({container: '#pjaxContent'});
не забывая что должен быть подключен jQuery фреймворк (хотя в Yii он идет по умолчанию).
Или вешаем обновление на событие:
$(document).on('click', '#myBtn', function (e) { e.preventDefault(); $.pjax.reload({container: '#pjaxContent'}); return false; });
А, собственно, как указать контроллер, который вернет обновленные данные?
Можно здесь:
$this -> registerJs("
$('#field-table').change(function(e){
$.pjax({url: '".Url::to(['index'])."?table=' + $('#field-table option:selected').val(), container: '#pj-report-table'});
});
");
На "url" передаем запрос используя хелпер "Url::to(['index'])"