持久化过滤器
持久化过滤器允许你的应用保存已认证用户提交的过滤器。然后,当页面再次显示时,已保存的过滤器将被重用。
启用过滤器持久化
默认情况下,过滤器持久化是禁用的。你可以在你的 sonata_admin
配置中启用它
1 2 3 4
# config/packages/sonata_admin.yaml
sonata_admin:
persist_filters: true
选择持久化策略
当你通过设置 persist_filters
为 true
来启用过滤器持久化时。SonataAdmin 将使用默认的过滤器持久化器: Sonata
(目前,这是唯一提供的).
你可以通过创建一个新的类来实现你自己的过滤器持久化器,这个类需要实现 Sonata
接口并将其注册为服务。然后,唯一要做的就是告诉 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_filters
为 true
来启用过滤器持久化时。所有注册的 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 许可下授权的。