Bonjour,

Je veux associer les utilisateurs à des groupes qui sont enregistrés dans BD.

Voici ma Entity : Group

<?php
namespace Tungenius\UsersBundle\Entity;
use FOS\UserBundle\Entity\Group as BaseGroup;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity
 * @ORM\Table(name="fos_group")
 */
class Group extends BaseGroup
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
     protected $id;
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
}

Et Entity : User

<?php
namespace Tungenius\UsersBundle\Entity;
use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    /**
     * @ORM\ManyToMany(targetEntity="Tungenius\UsersBundle\Entity\Group")
     * @ORM\JoinTable(name="fos_user_user_group",
     * joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
     * inverseJoinColumns={@ORM\JoinColumn(name="group_id", referencedColumnName="id")}
     * )
     */
    protected $groups;

    /**
     * @ORM\OneToOne(targetEntity="Tungenius\UsersBundle\Entity\Profils", cascade={"remove"})
     * @ORM\JoinColumn(nullable=true)
     */
    private $profil;

    public function __construct()
    {
        parent::__construct();
    }
    /**
     * Get id
     *
     * @return integer 
     */
    public function getId()
    {
        return $this->id;
    }
    /**
     * Set profil
     *
     * @param Profils $profil
     * @return User
     */
    public function setProfil(Profils $profil)
    {
        $this->profil = $profil;

        return $this;
    }
    /**
     * Get profil
     *
     * @return Profils 
     */
    public function getProfil()
    {
        return $this->profil;
    }
    /**
     * Get groups
     *
     * @return \Doctrine\Common\Collections\Collection 
     */
    public function getGroups()
    {
        return $this->groups;
    }
}

Pour l'intégration du bundle, j'ai suivi le tuto de Alex-D.

Merci de m'aider, je suis vraiment bloquer !

8 réponses


Matrix
Auteur

Personne peut m'aider !

Pourrais-tu être plus précis ? Associer des utilisateurs a des groupes qui sont dans ta base de données ?

Je n'ai jamais utilisé les groupes de fosuserbundle mais (je dis peut-être une connerie) il me semble que ce ne sont pas des groupes type "facebook" mais plutôt des "groupes" qui permettent d'attribuer un ROLE similaire à un groupe d'utilisateurs.

Matrix
Auteur

Merci pour votre réponse Devict.
Je voulais dire par le mot groupe que c'est un rôle.
Oui, comment je peut attribuer un ROLE similaire à un groupe d'utilisateur en sauvegardant les rôles dans une table "group".

As-tu lu la doc sur github ? Normalement ils expliquent tout, sinon quelles erreurs tu as ?

Matrix
Auteur

En fait j'ai deux problèmes, Je veux :

  • savoir comment ajouter un utilisateur dans la base de donnée avec une Rôle par défaut "ROLE_USER" ?
  • offrir à l'administrateur du site une interface avec la quelle il peut ajouter un utilisateur(nom, prénom, date de naissance,...) et lui attribuer un rôles(Les rôles sont dans une liste déroulante afficher depuis la table group).

Pour le rôle par défaut tu dois créer un constructeur dans ton entité User y attribuer le ROLE_USER. Pour ton autre problème c'est juste une histoire de création de formulaire. Si c'est juste ça je ne vois pas pourquoi tu as besoin des groupes :).

Matrix
Auteur

J'ai besoin des groupes parce-que j'ai pas trouvé un moyen pour récupérer les rôles d'une manière distincte(pour remplir ma liste déroulante) depuis l'entité User parce-que Doctrine enregistre les rôles avec un type DC2Type:array (ex : a:1:{i:0;s:10:"ROLE_ADMIN";}) dans la table fos_user. S'il y a un moyen comment le faire ? Et si c'est possible est-ce-que vous pouvez me donner la démarche pour comment créer une bonne gestion d'utilisateurs avec Symfony 2 ?

Ah oui j'ai cherché ça a l'air plus compliqué que ce que je pensais. J'ai pas creusé la question mais en fouinant un peu j'ai trouvé un guide qui pourrait t'aider http://blog.jmoz.co.uk/symfony2-fosuserbundle-roles