xaben/datafilter

提供数据过滤常见接口的库

dev-main 2021-08-09 13:42 UTC

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\DoctrineORMRepository
    • App\Filter\Repository\MongoRepository
  • 实现 App\Filter\Transformer\TransformerInterface 的转换器,通常您应该扩展

    • 对于API App\Filter\Transformer\ApiAbstractTransformer
    • 对于DataTables App\Filter\Transformer\AbstractTransformer

通常,转换器和过滤定义都应该在应用中注册为服务。

之后,在控制器中,它就像这样简单

use App\Filter\Adapter\DataTableAdapter;
use App\Filter\Definition\UserDefinition;
...
        return new JsonResponse(
            $this
                ->get(DataTableAdapter::class)
                ->process($this->get(UserDefinition::class), $request)
        );
...

提示:您可以将服务作为方法参数注入,而不是从控制器获取它们。

请查看以下文件以获取示例

定义示例

转换器示例

许可协议

此包可在MIT许可协议下使用。