【问题标题】:Symfony2: Always return a variable to TWIGSymfony2:始终将变量返回给 TWIG
【发布时间】:2012-10-06 14:46:09
【问题描述】:
  • 我创建了一个用户实体,它实现了用户界面。一切正常。
  • 我创建了两个辅助表,管理角色和权限(每个角色都有一些权限)。

所以,我的实体是:

用户 -> 有一个角色(一个角色,这个角色来自--->)

角色 -> 只是角色的名称

权限 -> 只是权限的名称

RolePermission -> 创建角色和权限之间的关系。

我需要做的是获取当前登录用户的权限:怎么做?首先查找用户的角色,然后查看 RolePermission 有哪些权限。

这没关系,但一旦我拥有此权限,我需要将其发送给 TWIG。

我可以手动执行此操作,向应用程序的每个 $this->render 发送一个数组这些权限,但我认为这不是最好的解决方案(懒惰...)。

是否可以在每次渲染 TWIG 模板时发送此数据(具有权限的数组)?怎么样?

编辑:

这个问题是关于获取与登录用户相关的信息,而不是检查 TWIG (is_granted) 中的角色

【问题讨论】:

    标签: php symfony doctrine-orm twig


    【解决方案1】:

    在 Twig 中,使用is_granted() 函数检查当前用户是否具有特定角色:

    {% if is_granted('ROLE_ADMIN') %}
        {# output stuff for an admin #}
    {% endif %}
    

    如果要获取当前用户的角色,请执行以下操作:

    {% for role in app.user.roles %}
        {# do what you want with the role #}
    {% endif %}
    

    【讨论】:

    • 正如我所说,我不需要这个。我已经知道如何在 twig 中检查角色...
    • 这个问题是关于获取与登录用户相关的信息,(具有权限的数组,其中权限是另一个实体)但不打算检查 TWIG 中的角色(is_granted)
    • 不,我再次编辑了这个问题。更清楚吗?感谢您的帮助;=)
    【解决方案2】:

    假设这样的数据库架构...

    [table User] --ManyToOne--> [table Role] --OneToMany--> [table Permission] 
    

    ...您可以尝试以下方法:

    {% for permission in app.user.role.permissions %}
        {{ permission.name }}
    {% endfor %}
    

    【讨论】:

    • 它看起来像解决方案。我会检查然后回来批准它:)
    【解决方案3】:

    经过大量研究,由于我的需要,我终于返回并拥有每个->render 中的权限

    【讨论】:

      猜你喜欢
      • 2015-04-07
      • 1970-01-01
      • 2021-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多