Symfony FOS在打印角色时会给人留下混乱的印象

Symfony FOS在打印角色时会给人留下混乱的印象,symfony,twig,fosuserbundle,Symfony,Twig,Fosuserbundle,下面的输出给我一个错误的印象。有人能解释为什么我得到下面的结果,而不是我在底部提到的其他人,因为他们对我更有意义 提前谢谢 注意:我以超级管理员身份登录 细枝环: security.yml: superadmin帐户数据库中角色字段中的内容: 我希望将其中一个作为输出: 角色\u SUPER\u ADMIN存储在我的帐户的数据库中 在security.yml中针对我的角色设置角色用户、角色管理员、角色允许切换 我认为你必须自己做,因为没有内置的mecanics来做这件事,这不是因为FosUser

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

提前谢谢

注意:我以超级管理员身份登录

细枝环:

security.yml:

superadmin帐户数据库中角色字段中的内容:

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

角色\u SUPER\u ADMIN存储在我的帐户的数据库中 在security.yml中针对我的角色设置角色用户、角色管理员、角色允许切换
我认为你必须自己做,因为没有内置的mecanics来做这件事,这不是因为FosUserBundle


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

我的用户很困惑,让我有点头痛,所以我不得不这样做以避免这种误解:

由于角色_USER被添加到数组的末尾,所以我将其排除在外

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

您的问题是您也看到了角色用户吗?默认情况下,当您使用FOSUserBundle获取角色时,每个用户都会向其中添加默认角色role\u user,当您尝试使用addRole添加它时,也会忽略该用户。它永远不会显示在数据库中,因为它从未实际添加到模型中。@Qoop-你说得对。我昨天发现了它,并决定在下面编写代码。
ROLE_SUPER_ADMIN 
ROLE_USER
role_hierarchy:
    ROLE_ADMIN: ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
a:1:{i:0;s:16:"ROLE_SUPER_ADMIN";}
{% for role in app.user.roles | slice(0, (app.user.roles | length) - 1) %}
    {{ role }}
    {% if not loop.last %}
        ,
    {% endif %}
{% endfor %}