public function actionCatalog()
{
if (Yii::$app->request->isAjax && Yii::$app->request->isPost)
{
$selection = Yii::$app->request->post('price');
if (is_array($selection[2]))
{
$answeronajax = Notebooks::find()->where(['between', 'price', $selection[0], $selection[1]])->andWhere(['producer_id'=> $selection[2]])->all();
}
else
{
$answeronajax = Notebooks::find()->where(['between', 'price', $selection[0], $selection[1]])->all();
}
return $this->asJson([$answeronajax]);
}
return $this->render('catalog');
}
$('#selnote').on('click', function (e)
{
e.preventDefault();
var pricemin = $("#price-min").val();
var pricemax = $("#price-max").val();
//var price = $("#price option:selected").text();
//var maz = $('#formsub .optradio:checked').val();
let values = $('.producer').find('input[type="checkbox"]:checked').toArray().map(n => $(n).val());
if (!values.length) {
values = 0;
}
$.ajax(
{
url:'index.php?r=site/catalog',
data: {price:[pricemin,pricemax, values]},
type: 'POST',
success: function (res) {
alert('Успешно');
console.log(res);
},
error: function () {
alert('Ошибка отправки заявки');
}
}
);
});
public function actionCatalog()
{
if (Yii::$app->request->isAjax && Yii::$app->request->isPost)
{
$selection = Yii::$app->request->post('price');
$answeronajax = Notebooks::find()->where(['between', 'price', $selection[0], $selection[1]])->all();
return $this->asJson([$selectionajax]);
}
return $this->render('catalog');
}
$selection[2]
уже будет массивом (Если выбор не сделан будет 0 не массивом) if (is_array($selection[2]))
{ Запрос с where которые ключают значения чекбоксов}
else
{ Вариант запроса без лишнего where}
if (Yii::$app->request->isAjax && Yii::$app->request->isPost)
{
$selection = Yii::$app->request->post('a');
$answeronajax = Notebooks::find()
->where(['between', 'price', $selection[0], $selection[1]])->all();
return $this->asJson([$answeronajax]);
}
return $this->render('catalog');
<div class="aside">
<h3 class="aside-title">Цена</h3>
<div class="price-filter">
<div id="price-slider"></div>
<div class="input-number price-min">
<input id="price-min" type="number">
<span class="qty-up">+</span>
<span class="qty-down">-</span>
</div>
<span>-</span>
<div class="input-number price-max">
<input id="price-max" type="number">
<span class="qty-up">+</span>
<span class="qty-down">-</span>
</div>
</div>
</div>
gridView или listView обвернутые в виджет Pjax и форма с фильтрами. Все есть из коробки, примеров в сети миллион.
$('#price').on('change', function (e)
{}
<?php
// comment out the following two lines when deployed to production
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require __DIR__ . '/../frm/vendor/autoload.php';
require __DIR__ . '/../frm/vendor/yiisoft/yii2/Yii.php';
$config = require __DIR__ . '/../frm/config/web.php';
(new yii\web\Application($config))->run();
public $basePath = '@webroot';
public $baseUrl = '@web';