Фильтрация
Форма фильтров для таблицы, собранная из её же полей — шаблон писать не нужно.
Как отметить поле
Фильтруемость выбирается у поля, на самом поле: включите флаг Фильтруемое. Колонки тут ни при чём — поле может быть фильтруемым, не появляясь в гриде вовсе.
Дальше форма выводится сниппетом 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, и ошибки тоже не будет. Так задумано — неизвестный ключ фильтра не должен выдавать, существует ли скрытое поле, — но из этого следует, что проверять всегда надо сперва флаг у поля.