web-id/flan

FLAN - 像忍者一样过滤

资助包维护!
web-id-fr

安装次数: 2,638

依赖项: 0

建议者: 0

安全性: 0

星标: 5

关注者: 9

分支: 1

开放问题: 0

类型:项目

0.1.0 2021-06-28 08:16 UTC

README

安装

使用composer安装此包。

composer require web-id/flan

FLAN使用Laravel Package Auto-Discovery,不需要您手动添加ServiceProvider。

使用发布命令将包配置复制到本地配置

php artisan vendor:publish --provider="WebId\Flan\FlanServiceProvider"

最后,运行过滤表的迁移

php artisan migrate

用法

您可以使用以下方式创建过滤器

php artisan filter:create User

或者最终只是Filter类

php artisan make:filter:class User

或者只是Filter配置

php artisan make:filter:config User

过滤器配置

您可以在config/FilterConfigs文件夹中找到您的过滤器配置文件

任何字段类型的配置

return [
    'name' => 'myfilter',
    'filters' => [
        [
            'text' => 'Model ID',
            'name' => 'id',
            'active' => true,
            'field' => [
                'type' => 'number',
            ],
        ],
        // [ ... ]
    ],
];

filters.*.text是HTML输入标签

  • filters.*.name是HTML输入的name属性
  • filters.*.active决定数据是否会在表中显示
  • filters.*.filterable决定是否为该列显示过滤器输入
  • filters.*.field包含应用于输入的选项
  • filters.*.field.type是输入类型,可以是以下之一:checkboxdatenumberselecttext
  • filters.*.field.options包含可用的选择列表。以下是一个示例

特定于select类型的配置

  • filters.*.field.options包含可用的选择列表。以下是一个示例
'options' => [
    [
        'value' => '0',
        'text' => 'Disabled',
    ],
    [
        'value' => '1',
        'text' => 'Enabled',
    ],
    // [ ... ],
],

过滤器类

custom_select定义属性

假设您正在定义一个BookFilter类,并且想要格式化页数值

$this->setDefinition('number_of_pages', [
    'custom_select' => 'CONCAT(`number_of_pages`, " pages")',
]);

join定义属性

假设您正在定义一个BookFilter类,并且想要能够根据书籍作者的出生城市进行过滤,例如。

如果您想使用带有连接子句的自定义选择,可以在Filter类构造函数中这样做

$this->setDefinition('author_birth_city', [
    'join' => 'leftJoinAuthorsTable',
    'custom_select' => '`authors`.`birth_city`',
]);

然后,您需要添加一个以join参数命名的函数来应用查询的连接,例如

protected function leftJoinAuthorsTable(): void
{
    $this->query->leftJoin(
        'authors',
        'books.author_id',
        '=',
        'authors.id'
    );
}

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件获取更多信息。