Twig {%if object.getPermisisons.check(app.user)%}

时间:2013-07-05 20:48:06

标签: php symfony doctrine-orm twig

我正在学习延长枝条(twig.sensiolabs.org/doc/advanced.html)。

我想检查当前用户是否存在于一组用户和组中(权限用户实体形成多对一关系,并且< strong>群组实体)。

目前,twig function check()是我的捆绑包中的扩展程序,为每个用户和每个中的用户重复权限,比较当前用户,并返回true或false。

我知道我可以将两个参数传递给twig函数:check(app.user, object.getPermissions),我的问题是我可以在第一个参数上调用函数:object.getPermissions.check(app.user)吗?

从我读过的内容来看,它似乎只承认获取,但我想联系社区,看看是什么可能的。

谢谢。

1 个答案:

答案 0 :(得分:0)

object.getPermissions.check(app.user)表示无论方法getPermissions()返回什么,代码都会期望返回的值具有方法check()

解决问题的两个解决方案(一个接近您想要的解决方案,另一个解决方案更清洁):

  • 创建Twig filter以获得object.getPermissions|check(app.user)等语法,但我个人并不喜欢它。
  • 在对象上创建一个完全符合您期望的方法。一个不言自明的例子是方法名称,如hasViewAccess($user)hasCreateAccess($user),因此您可以轻松地{% if object.hasCreateAccess(app.user) %}

如果您需要服务容器,则可以创建一个针对该对象调用的Twig过滤器hasCreateAccess。它看起来像{% if object|hasCreateAccess(app.user) %}。它绝对是最灵活的解决方案。