xaben / datafilter
提供数据过滤常见接口的库
dev-main
2021-08-09 13:42 UTC
Requires
- php: >=8.0
Requires (Dev)
- phpunit/phpunit: ^9.0
Suggests
- xaben/filter-api: For using API Fractal integration
- xaben/filter-datatables: For using DataTables integration
- xaben/filter-doctrine: For using Doctrine as a data source
This package is auto-updated.
Last update: 2024-09-09 20:58:16 UTC
README
实现数据过滤和分页变得简单。
实现基于
- 拥有输入过滤格式的适配器。包含2个默认实现(DataTables和Api)
- 输出格式(DataTables,Api,原始)的格式化器
- 底层数据库(Doctrine ORM)的适配器
您可以按照自己的喜好扩展每个方面,无论是替换实现还是实现接口。
创建您的第一个过滤器
该包附带2个预定义输入适配器
- DataTables适配器(
App\Filter\Adapter\DataTableAdapter):用于解析DataTables的请求 - API适配器(
App\Filter\Adapter\ApiAdapter):用于API请求
为了使其正常工作,我们首先需要进行一些设置。需要以下3个东西
- 一个过滤定义
- 一个转换器
- 一个仓库服务
每个过滤定义都实现了 App\Filter\Definition\FilterDefinitionInterface,您也可以使用 App\Filter\Definition\BaseFilterDefinition 作为起点。基类期望2个参数
-
实现
App\Filter\Repository\FilterableRepositoryInterface的仓库服务,有2个默认实现App\Filter\Repository\DoctrineORMRepositoryApp\Filter\Repository\MongoRepository
-
实现
App\Filter\Transformer\TransformerInterface的转换器,通常您应该扩展- 对于API
App\Filter\Transformer\ApiAbstractTransformer - 对于DataTables
App\Filter\Transformer\AbstractTransformer
- 对于API
通常,转换器和过滤定义都应该在应用中注册为服务。
之后,在控制器中,它就像这样简单
use App\Filter\Adapter\DataTableAdapter; use App\Filter\Definition\UserDefinition; ... return new JsonResponse( $this ->get(DataTableAdapter::class) ->process($this->get(UserDefinition::class), $request) ); ...
提示:您可以将服务作为方法参数注入,而不是从控制器获取它们。
请查看以下文件以获取示例
许可协议
此包可在MIT许可协议下使用。