我正在学习延长枝条(twig.sensiolabs.org/doc/advanced.html)。
我想检查当前用户是否存在于一组用户和组中(权限与用户实体形成多对一关系,并且< strong>群组实体)。
目前,twig function check()是我的捆绑包中的扩展程序,为每个用户和每个组中的用户重复权限,比较当前用户,并返回true或false。
我知道我可以将两个参数传递给twig函数:check(app.user, object.getPermissions)
,我的问题是我可以在第一个参数上调用函数:object.getPermissions.check(app.user)
吗?
从我读过的内容来看,它似乎只承认是和获取,但我想联系社区,看看是什么可能的。
谢谢。
答案 0 :(得分:0)
object.getPermissions.check(app.user)
表示无论方法getPermissions()
返回什么,代码都会期望返回的值具有方法check()
。
解决问题的两个解决方案(一个接近您想要的解决方案,另一个解决方案更清洁):
object.getPermissions|check(app.user)
等语法,但我个人并不喜欢它。hasViewAccess($user)
或hasCreateAccess($user)
,因此您可以轻松地{% if object.hasCreateAccess(app.user) %}
。如果您需要服务容器,则可以创建一个针对该对象调用的Twig过滤器hasCreateAccess
。它看起来像{% if object|hasCreateAccess(app.user) %}
。它绝对是最灵活的解决方案。