DropDownList фильтр с множественным выбором GridView Yii2
Создание выпадающего списка с множественным выбором для фильтров GridView Yii2 на примере библиотеки Bootstrap Multiselect
1) Подключаем библиотеку Bootstrap Multiselect
Скачиваем на офф.сайте файлы bootstrap-multiselect.js и bootstrap-multiselect.css и подключаем (можно через registerjs)
<?php $this->registerJsFile('/js/bootstrap-multiselect.js', ['depends' => [\yii\web\JqueryAsset::className()]]); $this->registerCssFile("/css/bootstrap-multiselect.css", ['depends'=> ['backend\assets\AppAsset']]); //инициализируем фильтр dropDownList $this->registerJs("$(document).ready(function(){ $('#scansearch-user_scan').multiselect();});", yii\web\View::POS_END); ?>
2) Добавляем список для фильтра в GridView
<?php use yii\helpers\ArrayHelper; use yii\helpers\Html; ?>
[ 'attribute'=>'user_scan', 'filter' => Html::activeDropDownList($searchModel, 'user_scan', ArrayHelper::map(User::find()->all(), 'id', 'name'), ['style'=>'display: none','multiple' =>true]), 'value' => function($data){ return $data->name; } ],
3) Модель поиска ScanSearch
Это в rules
[[ 'user_scan'], 'safe'],
Это в метод search
if ($this->user_scan != null && count ($this->user_scan)>0) { $ids = array_map('intval', $this->user_scan); $query->andFilterWhere(['in', 'user_scan', $ids]); }
824 04.03.2020 г. Заметки Yii2