PHPackages                             kosmosafive/kosmos.filter - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Database &amp; ORM](/categories/database)
4. /
5. kosmosafive/kosmos.filter

Abandoned → [kosmosafive/bitrix-filter](/?search=kosmosafive%2Fbitrix-filter)Bitrix-d7-module[Database &amp; ORM](/categories/database)

kosmosafive/kosmos.filter
=========================

Kosmos: Фильтр

1.0.1(1y ago)02Apache-2.0PHPPHP &gt;=8.3

Since Aug 20Pushed 1y ago1 watchersCompare

[ Source](https://github.com/kosmosafive/kosmos.filter)[ Packagist](https://packagist.org/packages/kosmosafive/kosmos.filter)[ Docs](https://github.com/kosmosafive/kosmos.filter)[ RSS](/packages/kosmosafive-kosmosfilter/feed)WikiDiscussions master Synced 1mo ago

READMEChangelogDependencies (2)Versions (3)Used By (0)

Kosmos: Фильтр
==============

[](#kosmos-фильтр)

Введение
--------

[](#введение)

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

В полном виде (но не обязательно) предполагается разработка дополнительного модуля проекта \*.filterconfig, который будет предоставлять возможность конфигурации фильтра и передачу данных клиенту. Например, типовой фильтр на портале может предполагать отображение видимых \\ скрытых (отображаемых по кнопке "показать все") свойств фильтра, сами свойства могут быть разбиты на секции \\ колонки. Шаблонизатору на основе конфигурации фильтра необходимо передавать конфигурацию свойств фильтра для рендера.

Установка
---------

[](#установка)

- Установить модуль

### Установка через composer

[](#установка-через-composer)

В composer.json (пример для директории local) проекта добавьте

```
{
  "require": {
    "wikimedia/composer-merge-plugin": "dev-master"
  },
  "config": {
    "allow-plugins": {
      "wikimedia/composer-merge-plugin": true
    }
  },
  "extra": {
    "merge-plugin": {
      "require": [
        "../bitrix/composer-bx.json",
        "modules/*/composer.json"
      ],
      "recurse": true,
      "replace": true,
      "ignore-duplicates": false,
      "merge-dev": true,
      "merge-extra": false,
      "merge-extra-deep": false,
      "merge-scripts": false
    },
    "installer-paths": {
      "modules/{$name}/": [
        "type:bitrix-d7-module"
      ]
    }
  }
}
```

Использование
-------------

[](#использование)

### Пример использования

[](#пример-использования)

```
use Bitrix\Main\UserTable;
use Kosmos\Filter;
use Kosmos\Filter\ValueObject\FormData;

$query = UserTable::query();

$fieldCollection = (new Filter\Field\FieldCollection())
    ->add(
        new Filter\Field\PositiveInteger(
            new Filter\FieldConfig\Simple(
                new Filter\FieldConfig\Property\Single('ID'),
                'ID'
            )
        )
    )
    ->add(
        new Filter\Field\Boolean(
            new Filter\FieldConfig\Simple(
                new Filter\FieldConfig\Property\Single('ACTIVE'),
                'ACTIVE'
            )
        )
    )
    ->add(
        new Filter\Field\Text(
            new Filter\FieldConfig\Simple(
                new Filter\FieldConfig\Property\Single('NAME'),
                'NAME'
            )
        )
    );

$formData = new FormData(...);
$fieldCollection->setFormData($formData);
(new Filter\QueryBuilder\ORM($query))->apply($fieldCollection, $formData);
```

### Сущности

[](#сущности)

#### Field (Поле)

[](#field-поле)

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

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

[](#fieldconfig-конфигурация-поля)

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

#### Property (Свойство)

[](#property-свойство)

Отвечает за хранение информации о поле(-ях) в запросе (читай: название поля или префикс, используемый при построении запроса).

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

[](#querybuilder-строитель-запроса)

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

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

[](#handlerconfig-конфигурация-обработчика)

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

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

[](#handler-обработчик)

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

### Расширение функционала

[](#расширение-функционала)

Собственные сущности создаются в рамках собственного модуля путем реализации соответствующего интерфейса или наследования базового класса.

Для поддержки кастомных полей необходимо определить обработчик поля. Сделать это можно с помощью события модуля onCreateHandlerCollection, в ответе которого в ключе handlerConfig вернуть одну \\ несколько конфигураций.

```
use Bitrix\Main\Event;
use Bitrix\Main\EventResult;
use Kosmos\Filter\Handler;
use Kosmos\Sample\Domain\Filter\Field;
use Kosmos\Sample\Domain\Filter\Handler as SampleHandler;

public static function onCreateHandlerCollection(Event $event): EventResult
{
    return new EventResult(
        EventResult::SUCCESS,
        [
            'handlerConfig' => [
                new Handler\HandlerConfig(new SampleHandler\ORM\Role(), Field\Role::class),
            ]
        ]
    );
}
```

###  Health Score

26

—

LowBetter than 41% of packages

Maintenance32

Infrequent updates — may be unmaintained

Popularity2

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity56

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

682d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/4149bcfcdcc947ad42afa006615812c8ea743bf76e0e10ef44ffb3d5ae2796f0?d=identicon)[kosmosafive](/maintainers/kosmosafive)

---

Top Contributors

[![kosmosafive](https://avatars.githubusercontent.com/u/14090839?v=4)](https://github.com/kosmosafive "kosmosafive (3 commits)")

---

Tags

apiormbitrixqueryfilterkosmos

### Embed Badge

![Health badge](/badges/kosmosafive-kosmosfilter/health.svg)

```
[![Health](https://phpackages.com/badges/kosmosafive-kosmosfilter/health.svg)](https://phpackages.com/packages/kosmosafive-kosmosfilter)
```

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.5k10](/packages/helsingborg-stad-municipio)[andreyryabin/sprint.migration

bitrix migration module

210208.2k2](/packages/andreyryabin-sprintmigration)[digitalwand/digitalwand.admin_helper

API for custom admin interface in Bitrix by DigitalWand and Notamedia agency

15533.8k3](/packages/digitalwand-digitalwandadmin-helper)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
