kosmosafive / kosmos.filter
Kosmos: 过滤器
Requires
- php: >=8.3
- ext-json: *
- composer/installers: ^2
Requires (Dev)
- roave/security-advisories: dev-latest
This package is auto-updated.
Last update: 2024-09-20 10:34:06 UTC
README
简介
模块化解决方案提供了创建过滤器字段、接收和过滤表单数据、应用修改的机制。
完整版本(但不是必需的)假设开发一个额外的项目模块 *.filterconfig,该模块将提供配置过滤器和向客户端传递数据的能力。例如,在门户上的典型过滤器可能包括显示或隐藏(通过“显示所有”按钮)的过滤器属性,属性可以按部分或列划分。基于过滤器配置的模板化器需要传递过滤器属性的配置以进行渲染。
安装
- 安装模块
通过composer安装
在项目的composer.json(例如,对于本地目录)中添加
{ "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 (字段)
描述过滤器字段的实体。例如:布尔值、正整数、选择器、函数、用户。存储字段配置(FieldConfig)、字段值。负责在传递的表单数据中查找、过滤和归一化字段数据。字段可能包含额外的参数集。例如,选择日期范围的字段允许指定选择的最小和最大日期;指定是否可以选择日期或日期和时间。
FieldConfig (字段配置)
字段配置存储有关属性(Property)和字段标识符的信息。
Property (属性)
负责存储有关查询中字段(读作:字段名称或构建查询时使用的前缀)的信息。
QueryBuilder (查询构建器)
为了与特定的查询构建实现进行交互,实现一个特定的构建器。例如,可以实现:ORM构建器、Elasticsearch构建器、ClickHouse构建器。接受字段集合和表单数据。找到字段处理器并应用所需的修改。例如,ORM构建器存储查询对象,该对象在应用修改时得到丰富。
HandlerConfig (处理器配置)
存储有关字段处理器(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), ] ] ); }