我正在使用 symfony2、教义、knp 分页器和安全选民。在我的应用程序中,每个用户都有一些孩子。我应该显示属于当前用户的孩子列表(由当前登录的用户定义)。
所以我创建了一个安全投票者,它只授予用户访问它自己的孩子的权限。它在这种情况下非常有效:
if ($this->get('security.context')->isGranted('view', $child))
或者
{% for entity in pagination if app.security.isGranted('view', child) %}
可以想象,分页器无法正常工作,因为我根本没有在当前页面显示孩子。因此,我的分页器变成了垃圾。
我看到两种可能的解决方案:
- 在查询阶段过滤实体。问题是如何在学说查询构建器中使用isGranted?
- 用分页器做一些事情,消除适当不需要的孩子
我意识到我可以修改我的查询添加类似->andWhere('c.parent == :user')但这个列表工具非常通用,用于列出数十种不同的关系,如user-child、user-group- town-orders,user-post-tags,user-films。