Yii2. GridView. Filter: настройка, примеры

Разбираемся в том, как настроить внешний вид полей фильтра в GridView. За документацией идем в класс DataColumn.

В этом классе есть целых 3 замечательных свойства для настройки фильтрации по полю:

$filterstring|array|null|false – HTML-код поля фильтра (поле ввода, выпадающий список и т.д.)
$filterInputOptionsмассив html-опций поля фильтра
$filterOptionsмассив html-опций ячейки

Не выводится фильтр?

А вы ничего не забыли?
GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
...

Вывод фильтра по умолчанию

Для того, чтобы вывести фильтр по умолчанию и делать-то ничего не нужно или же:
[
    'attribute' => 'id',
    'filter' => null
],

Как скрыть (отключить) фильтр для поля

[
    'attribute' => 'id',
    'filter' => false
],

Как задать ячейке с фильтром ширину

[
    'attribute' => 'id',
    'filterOptions' => ['style' => 'width: 100px']
],

Как добавить ячейке с фильтром css-класс

[
    'attribute' => 'id',
    'filterOptions' => ['class' => 'filter-cell']
],

Как добавить полю с фильтром css-класс

Аналогичным образом, только используем свойство filterInputOptions. Также здесь прописываем любые html-атрибуты (style, data- и т.д.)
[
    'attribute' => 'id',
    'filterInputOptions' => ['class' => 'filter-cell']
],


О том, как вывести в поле фильтра выпадающий список или использовать плагин, читать в посте Yii2. GridView. Filter: выпадающие списки, datepicker

Комментарии

  1. Она помогла мне решить мою задачу

    ОтветитьУдалить
    Ответы
    1. Рада, что что-то из моих заметок оказалось полезным )

      Удалить
  2. Как добавить в фильтр checkbox для вывода уникальных значений по полю?

    ОтветитьУдалить
    Ответы
    1. Вам нужно посмотреть пример с использованием activeDropDownList в этом посте https://progergirl.blogspot.com/2018/04/yii2-gridview-filter-datepicker.html
      И добавить в выборку нужное условие для получения уникальных значений

      Удалить
  3. Спасибо. Искал, как задать ширину фильтра в GridView и хер где нашел. А у вас тут сразу - filterInputOptions, и всё готово :)

    ОтветитьУдалить
  4. Спасибо за блог, все супер!
    Вопрос: 2 грида на таблице, проблема с фильтрацией, как настроить на одну модель поиска, но разные методы. У пагинации и сортировки есть sortParam и pageParam, делающий каждую таблицу уникальной для данной операции, но как это сделать для фильтрации, а то фильтр отрабатывает одновременно в 2-ух :(
    Есть решение, чтобы не плодить модели поиска?

    ОтветитьУдалить
    Ответы
    1. Не понимаю, в чем у вас проблема. 2 грида на одной странице работают с одной моделью и при этом некорректно работают?

      Удалить
  5. Здравствуйте, не подскажите как добавить календарь в фильтр?

    ОтветитьУдалить
    Ответы
    1. Пример есть тут https://progergirl.blogspot.com/2018/04/yii2-gridview-filter-datepicker.html

      Удалить

Отправить комментарий

Популярные сообщения