@Leffken
Студент, как студент!

Как организовать ajax запрос, при этом обновление сделать через pjax, yii?

Всем привет.
Нужно сделать запрос, я так понимаю ajax, а обновить gridview pjax'ом.
На странице есть выпадающий список
<div class="notes-form">
        <?php Pjax::begin(['id' => 'driverPjax']) ?>
            <?php $form = ActiveForm::begin(['options' => ['data-pjax' => true]]); ?>         
                <? $param = ['prompt' => 'Выберите водителя', 'id' => 'dropDownList-driver']; ?>
                <?= Html::dropDownList('driver', 0, $Fio, $param); ?>         
            <?php ActiveForm::end(); ?>
        <?php Pjax::end(); ?>     
        </div>

Так же есть grid view
<?php Pjax::begin(['id' => 'notes']) ?>
    <?= GridView::widget([
        'dataProvider' => $dataProvider,
        'filterModel' => $searchModel,
        'columns' => [
            ['class' => 'yii\grid\SerialColumn'],
            [
                'attribute' => 'Fio',
                'value' => function ($model) {
                    return $model->idDriver['Fio'];
                } 
            ],
            'Cash',
            'Date',
            ['class' => 'yii\grid\ActionColumn'],
        ],
    ]); ?>
    <?php Pjax::end() ?>

Теперь нужно обновлять gridview (заново формировать dataProvider и serchModel), в зависимости от выпадающего списка. Как это можно реализовать ?
  • Вопрос задан
  • 2535 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
Если нужно обновить гридвью после сабмита формы, тогда можно просто перезагрузить PJAX-контейнер, например:
$('#driverPjax').on('pjax:end',   function() { 
	$.pjax.reload({
		container : '#notes', timeout: '5000',
	});		
});

Если же нужно обновлять гридвью непосредственно после выбора из выпадающего списка, тогда функцию перезагрузки контейнера нужно повесить на соответствующее событие выпадающего списка, например:
onChange = "$.pjax.reload({container : '#notes', timeout: '5000'});"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы