Skip to content

Фильтрация

Форма фильтров для таблицы, собранная из её же полей — шаблон писать не нужно.

Как отметить поле

Фильтруемость выбирается у поля, на самом поле: включите флаг Фильтруемое. Колонки тут ни при чём — поле может быть фильтруемым, не появляясь в гриде вовсе.

Дальше форма выводится сниппетом pbFilters:

[[!pbFilters? &table=`Products`]]

Операторы

Фильтр применяется тем же набором операторов, что грид и API:

ГруппаОператоры
Равенствоequals, not_equals
Сравнениеgreater_than, greater_than_or_equal, less_than, less_than_or_equal
Диапазоныbetween, not_between
Датыbefore, after, equals_or_before, equals_or_after
Текстcontains, like, starts_with, ends_with
Множестваis_in, is_not_in
Наличиеis_set, is_not_set
Логическиеtrue, false

Какие достанутся полю — выводится из его типа: числу диапазоны, дате операторы дат, тексту contains.

Системные фильтры

Четыре колонки, которые есть у каждой таблицы, фильтруются, не будучи полями вовсе:

published_at   created_at   updated_at   deleted_at

Они объявляются у таблицы как системные фильтры и ведут себя как остальные. Так делается «создано за неделю» или «только неопубликованные» — без поля, которое ничего не хранит.

Быстрые фильтры в тулбаре

Таблица может предлагать готовые фильтры кнопками — «неопубликованные», «требуют внимания», как назовёт проект.

Они приходят из контроллера действий таблицы: если у класса есть метод quickFilters(), его результат рисуется в тулбаре. Нет метода — нет кнопок и нет ошибки.

Почему ничего не происходит

Неотмеченное поле игнорируется молча

Ни в форме, ни через API, и ошибки тоже не будет. Так задумано — неизвестный ключ фильтра не должен выдавать, существует ли скрытое поле, — но из этого следует, что проверять всегда надо сперва флаг у поля.

© PageBlocks 2019-present