Добрый день. Есть раздел с отзывами на компании. В разделе два 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},
});
});