kosmosafive/bitrix-filter

Bitrix Filter

Installs: 13

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 0

Forks: 0

Open Issues: 0

pkg:composer/kosmosafive/bitrix-filter

1.0.0 2025-09-29 10:35 UTC

This package is auto-updated.

Last update: 2025-09-29 10:36:19 UTC


README

Модульное решение предоставляет механизм создания полей фильтра, прием и фильтрацию данных формы, применение модификаций. Является универсальным.

Field (Поле)

Сущность, описывающая поле фильтра. Примеры полей: булево, положительное целое, селектор выбора, функция, пользователь. Хранит конфигурацию поля (FieldConfig), значение поля. Отвечает за нахождение, фильтрацию и нормализацию данных поля в переданных данных формы. По необходимости поле может содержать дополнительный набор параметров. Например, поле выбора периода позволяет указать минимальную и максимальную даты для выбора; указать доступность выбора даты или даты и времени.

FieldConfig (Конфигурация поля)

Конфигурация поля хранит информацию о Свойстве (Property), идентификаторе поля.

Property (Свойство)

Отвечает за хранение информации о поле(-ях) в запросе (читай: название поля или префикс, используемый при построении запроса). Например, свойство номера (идентификатора) сущности обычно предполагает одно значение. В то время как свойство экспертизы хранит информацию об этапах, голосах.

QueryBuilder (Строитель запроса)

Для работы с конкретной реализацией построения запроса реализуется свой строитель. Например, могут быть реализованы: строитель ORM, строитель Elasticsearch, строитель ClickHouse. Принимает коллекцию полей и данные формы. Находит обработчик для полей и применяет требуемые модификации. Например, строитель ORM хранит объект запроса, который обогащается по мере применения модификаций.

HandlerConfig (Конфигурация обработчика)

Хранит информацию об обработчике поля (Handler) и классе поля, которое обрабатывает.

Handler (Обработчик)

Принимает строителя запроса, поле и данные формы. Применяет необходимые модификации на основе полученных данных. Обработчик может описывать различную логику. Например, эквивалентность, частичное содержание, промежуток, функцию.