Symfony 2 FOS UserBundle-Benutzer erhalten keine Gruppenrolle

Ich verwende FOS User Bundle, um den Zugriff auf meine App zu verwalten. Da ich einen Gruppenbegriff brauche, habe ich implementiert, was ich brauche, wie im Dokument beschriebenGruppe .

Alles ist in Ordnung, um Benutzer und Gruppen zu erstellen, aber wenn ich mich mit einem Benutzer anmelde und versuche, seine Rolle zu bekommen, hat er nur USER_ROLE.

Hier ist mein User

use FOS\UserBundle\Entity\User as BaseUser;
class RegistredUser extends BaseUser
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

/**
 * @ORM\ManyToOne(targetEntity="myBundle\Entity\RegistredUserGroup")
 */
protected $group;
 [...]
}

Hier ist meine Gruppenklasse

use FOS\UserBundle\Entity\Group as BaseGroup;
class RegistredUserGroup extends BaseGroup
{
/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;

[...]
}

Mein Benutzer hat keine Rollen in der RegistredUser-Tabelle festgelegt, aber eine groupId festgelegt. Diese Gruppe hat die Rolle ROLE_ADMIN.

In meinem Layout versuche ich, die Rolle folgendermaßen zu überprüfen:

    {% if is_granted('ROLE_ADMIN') %}
    <dl class="menuIcon">
                    <dd><img src="{{ asset('bundles/bundle/images/user.png') }}" alt=""></dd>
                    <dd>{{ "menu.gererReferentiel"|trans }}</dd>
                    </dl>
    {% endif %}

Symfony zeigt jedoch nichts an.

Benutze ich eine schlechte Funktion zum Überprüfen von Gruppenrollen? Oder mache ich etwas anderes falsch?

Eine Lösung erhält groups_role von

{% if app.user != null and  app.user.group.hasRole('ROLE_ADMIN') %}

Aber gibt es eine andere Möglichkeit, dies zu tun?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage