跳到内容

持久化过滤器

编辑此页

持久化过滤器允许你的应用保存已认证用户提交的过滤器。然后,当页面再次显示时,已保存的过滤器将被重用。

启用过滤器持久化

默认情况下,过滤器持久化是禁用的。你可以在你的 sonata_admin 配置中启用它

1
2
3
4
# config/packages/sonata_admin.yaml

sonata_admin:
    persist_filters: true

选择持久化策略

当你通过设置 persist_filterstrue 来启用过滤器持久化时。SonataAdmin 将使用默认的过滤器持久化器: Sonata\AdminBundle\Filter\Persister\SessionFilterPersister (目前,这是唯一提供的).

你可以通过创建一个新的类来实现你自己的过滤器持久化器,这个类需要实现 Sonata\AdminBundle\Filter\Persister\FilterPersisterInterface 接口并将其注册为服务。然后,唯一要做的就是告诉 SonataAdmin 使用这个服务作为过滤器持久化器。

全局

1
2
3
4
5
# config/packages/sonata_admin.yaml

sonata_admin:
    persist_filters: true
    filter_persister: filter_persister_service_id

每个 Admin

1
2
3
4
5
6
7
8
9
10
11
# config/services.yaml

services:
    app.admin.user:
        class: App\Admin\UserAdmin
        tags:
            -
                name: sonata.admin
                model_class: App\Entity\User
                manager_type: orm
                filter_persister: filter_persister_service_id

为某些 Admin 禁用过滤器持久化

当你通过设置 persist_filterstrue 来启用过滤器持久化时。所有注册的 Admin 都将启用此功能。

如果你愿意,你可以为每个 Admin 禁用它。

1
2
3
4
5
6
7
# config/services.yaml

services:
    app.admin.user:
        class: App\Admin\UserAdmin
        tags:
            - { name: sonata.admin, model_class: App\Entity\User,  manager_type: orm, persist_filters: false }

注意

filter_persister 都可以全局和每个 admin 使用,这为你提供了配置此功能的最灵活方式。

这项工作,包括代码示例,是在 Creative Commons BY-SA 3.0 许可下授权的。
目录
    版本