FOS在打印角色时给人一种令人困惑的印象

时间:2014-09-24 16:14:27

标签: symfony twig fosuserbundle

下面的输出给我一个错误的印象。有人可以解释为什么我在下面得到结果而不是我在底部提到的其他人,因为他们对我更有意义吗?

提前致谢

注意:我以superadmin

登录

TWIG LOOP:

{% for role in app.user.roles %}
    {{ role }}
    {% if not loop.last %}
        <br />
    {% endif %}
{% endfor %}

TWIG OUTPUT:

ROLE_SUPER_ADMIN 
ROLE_USER

security.yml:

role_hierarchy:
    ROLE_ADMIN: ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

我在superadmin帐户数据库的角色字段中有什么:

a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}

我希望看到其中一个作为输出:

  • ROLE_SUPER_ADMIN(根据我的帐户存储在数据库中)
  • ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH(根据我在security.yml中的角色设置)

2 个答案:

答案 0 :(得分:0)

我认为你必须自己做,因为没有内置机制来做这件事(这不是因为FosUserBundle)

您可以使用security.role_hierarchy.roles容器参数来检索配置,并创建一个可以显示所需内容的方法(例如,创建一个Twig过滤器/函数)。

答案 1 :(得分:0)

我的用户感到困惑并且给了我一些头疼,所以我不得不这样做以避免这种误解:

由于ROLE_USER被添加到数组的末尾,我将其排除在外。

{% for role in app.user.roles | slice(0, (app.user.roles | length) - 1) %}
    {{ role }}
    {% if not loop.last %}
        ,
    {% endif %}
{% endfor %}