【问题标题】:Twig {% if object.getPermisisons.check(app.user) %}树枝 {% if object.getPermisisons.check(app.user) %}
【发布时间】:2013-07-05 20:48:05
【问题描述】:

我正在学习扩展树枝 (twig.sensiolabs.org/doc/advanced.html)。

我想检查当前用户是否存在于一组用户和组中(权限与一个用户实体和一个groups 实体)。

目前,twig 函数 check() 是我的 bundle 中的一个扩展,它为每个 user 和每个 groups 中的用户迭代 permissions,比较当前用户,返回真假。

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

根据我的阅读,它似乎只识别 isget 的,但我想与社区联系,看看是什么可能。

谢谢。

【问题讨论】:

    标签: php symfony doctrine-orm twig


    【解决方案1】:

    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) %}。这绝对是最灵活的解决方案。

    【讨论】:

    • 感谢您的解释。我去试试看!
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    • 2015-04-22
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    相关资源
    最近更新 更多