Задать вопрос
@Iossarian

Почему pjax запрос заменяет один get-параметр другим?

Добрый день. Есть раздел с отзывами на компании. В разделе два Select2 от Картика. Один для выбора компании, второй - для выбора оценки отзыва. Грубо говоря "Компания N", отзывы с оценкой 3.
Вывожу отзывы с помощью ListView и после выбора фильтра обновляю блок с помощью pjax. После выбора компании либо оценки в url летит выбранное значение, но проблема в том, что мне нужна возможность фильтрации по обоим параметрам одновременно - "Отзывы на компанию N с оценкой 3". Но сейчас выбор значения в одном списке перетирает в урле значение другого, т.е. одновременно в урле существует только 1 параметр. Как мне побороть эту проблему? Спасибо.

<?= Html::beginForm(Url::current(), 'GET', ['id' => 'filter-form']); ?>
        <?= Select2::widget([
            'name' => 'category_id',
            'id' => 'insurance',
            'value' => $insurance_id = Yii::$app->request->get('insurance') ? Yii::$app->request->get('insurance') : 'Все компании',
            'data' => ArrayHelper::merge(['' => 'Все компании'], ArrayHelper::map(ReviewCategory::find()->all(), 'id', 'title')),
            'size' => Select2::SIZE_LARGE,
            'pluginOptions' => [
                'tags' => true
            ],
            'options' => [
            ],
        ]) ?>
   
        <?= Select2::widget([
            'name' => 'rating',
            'id' => 'rating',
            'value' => Yii::$app->request->get('rating') ? Yii::$app->request->get('rating') : 'Любая оценка',
            'data' => ArrayHelper::merge(['' => 'Любая оценка'], ['1' => 1, '2' => 2, '3' => 3, '4' => 4, '5' => 5]),
            'size' => Select2::SIZE_LARGE,
            'pluginOptions' => [
                //'tags' => true,
                //'id' => 'rating',

            ],
            'options' => [
                'id' => 'rating',
            ],
        ]) ?>
    <?= Html::endForm(); ?>


$('#insurance').on('change', function() {
    $.pjax({
    
        timeout: 4000,
        url: $('#filter-form').attr('action'),
        container: '.my_class_for_summary',
        fragment: '.my_class_for_summary',
        scrollTo: true,
        replace: false,
        data: {insurance: this.options[this.selectedIndex].value},
   });
});
$('#rating').on('change', function() {
    $.pjax({
        timeout: 4000,
        url: $('#filter-form').attr('action'),
        container: '.my_class_for_summary',
        fragment: '.my_class_for_summary',
        scrollTo: true,
        data: {rating: this.options[this.selectedIndex].value},
   });
});
  • Вопрос задан
  • 84 просмотра
Подписаться 1 Простой 9 комментариев
Решения вопроса 1
@Iossarian Автор вопроса
Ответ оказался гораздо проще
$('select').on('change', function() {
$insurance_id = $('#insurance').val() ?? 0;
$rating  = $('#rating').val() ?? 0;
    $.pjax({   
        timeout: 4000,
        url: $('#filter-form').attr('action'),
        container: '.my_class_for_summary',
        fragment: '.my_class_for_summary',
        scrollTo: true,
        replace: false,
        data: {insurance: insurance_id, rating: rating},
   });
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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