如何过滤用户可以在 Sonata Admin 中看到的实体实例

Posted

技术标签:

【中文标题】如何过滤用户可以在 Sonata Admin 中看到的实体实例【英文标题】:How to filter the instances of an entity that a user can see in Sonata Admin 【发布时间】:2015-01-11 05:27:57 【问题描述】:

我有一个实体“Vehicles”,它与另一个实体“Department”有 ManyToOne 连接。我可以为用户设置“部门”属性。我希望这个用户(具有 ROLE_DEPARTMENT_MANAGER 角色)能够仅查看(列出、创建、删除等)他自己部门的车辆。

使用角色时,我可以限制对特定操作的访问。我认为我应该使用 ACL,但我不确定如何使用以及 Sonata Admin 的行为方式。

我在这里发现了类似的问题,但没有人回答:Sonata Admin Bundle filter show entity from role user

您能告诉我如何在 Sonata Admin Bundle 中执行此操作吗?

【问题讨论】:

【参考方案1】:

我刚刚写了关于这个确切主题的文章(我知道这个问题很老,但它可能有助于将来参考): http://www.theodo.fr/blog/2016/09/sonata-for-symfony-hide-your-filters/

【讨论】:

欢迎来到 SO。请提供此特定问题的答案。不只是发布链接【参考方案2】:

您可以自定义用于在您的 VehicleAdmin 类中生成列表的查询:

http://sonata-project.org/bundles/admin/master/doc/reference/action_list.html#customizing-the-query-used-to-generate-the-list

【讨论】:

以上是关于如何过滤用户可以在 Sonata Admin 中看到的实体实例的主要内容,如果未能解决你的问题,请参考以下文章

Sonata ODM Admin 自定义过滤器集

Sonata Admin - 更改过滤器值(关系字段)

Sonata Admin MongoDB DataGrid 过滤器

Sonata admin:默认情况下将过滤器设置为 false?

Sonata Admin Bundle 和 Doctrine 问题:如何从反面更新实体?

Sonata Admin Bundle:DatePicker 范围