Как в Yii2 custom фильтр _search файла с помощью pjax, чтобы ListView и GridView обновлялись без перезагрузки страницы?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
EVOSandru6
Сообщения: 605
Зарегистрирован: 2014.07.04, 13:33

Как в Yii2 custom фильтр _search файла с помощью pjax, чтобы ListView и GridView обновлялись без перезагрузки страницы?

Сообщение EVOSandru6 »

Добрый день,

Есть контроллер:

Код: Выделить всё

public function actionIndex()
    {
        $searchModel = new OffersSearch();
        $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

        return $this->render('index', [
            'dataProvider' => $dataProvider,
            'searchModel' => $searchModel,
        ]);
    }

index.php:

Код: Выделить всё

<?php Pjax::begin(['id' => 'notes']) ?>
                            <?= GridView::widget([
                                'dataProvider' => $dataProvider,
                                'filterModel' => $searchModel,
                                'columns' => [
                                    ['class' => 'yii\grid\SerialColumn'],
                                    'id',
                                    'name',
                                    ['class' => 'yii\grid\ActionColumn'],
                                ],
                            ]); ?>
                        <?php Pjax::end() ?>

js:

Код: Выделить всё

$("#search_note").on("pjax:end", function() {
        $.pjax.reload({
            container:"#notes"
        });  
    });

_search.php файл:

Код: Выделить всё

<?php yii\widgets\Pjax::begin(['id' => 'search_note']) ?>
        <?php $form = ActiveForm::begin([
            'options' => ['data-pjax' => true ],
            'method' => 'post',
        ]); ?>
...
        <?= $form->field($model, 'id')->textInput([
            'type'=>'number'
        ]) ?>
...

            <?= Html::submitButton(Yii::t('app', Yii::t('app','search')), ['class' => 'btn btn-primary']) ?>
            <?= Html::resetButton(Yii::t('app', Yii::t('app','reset')), ['class' => 'btn btn-default']) ?>
     
   <?php ActiveForm::end(); ?>

    <?php yii\widgets\Pjax::end() ?>

Если я меняю

Код: Выделить всё

'method' => 'post',
на

Код: Выделить всё

'method' => 'get',
То фильтр работает, но после перезагрузки страницы и все GET параметры летят в адресную строку.

Хотелось бы без перезагрузки страницы и желательно данные с формы посылать постом.

Подскажите, что я делаю не так?

И еще вопрос, может кто-нибудь знает - каким образом в кастумной форме передать вид сортировки, чтобы его скушал dataProvider? Актуально для ListView.
Аватара пользователя
belka2007
Сообщения: 12
Зарегистрирован: 2012.11.01, 22:01

Re: Как в Yii2 custom фильтр _search файла с помощью pjax, чтобы ListView и GridView обновлялись без перезагрузки страни

Сообщение belka2007 »

Код: Выделить всё

$dataProvider = $searchModel->search(Yii::$app->request->queryParams);
Заменить на:

Код: Выделить всё

$dataProvider = $searchModel->search(Yii::$app->request->post());
urichalex
Сообщения: 994
Зарегистрирован: 2015.08.07, 11:03

Re: Как в Yii2 custom фильтр _search файла с помощью pjax, чтобы ListView и GridView обновлялись без перезагрузки страни

Сообщение urichalex »

Оставить все как есть, только форму и грид поместить внутрь пиджака
andku83
Сообщения: 988
Зарегистрирован: 2016.07.01, 10:24
Откуда: Харьков

Re: не изменять url при pjax

Сообщение andku83 »

Код: Выделить всё

<?php Pjax::begin([
	'id' => 'notes',
	'enablePushState' => false
]) ?>
Ответить