symfony2 plusieurs-à-plusieurs forme de case à cocher
J'ai dans symfony crée des 2 entités: l'Utilisateur et le Rôle dans plusieurs-à-plusieurs relations. Cela signifie que chaque utilisateur peut avoir plusieurs rôles et les rôles peuvent être définis pour de nombreux utilisateurs.
Classe d'utilisateur:
/**
* @ORM\Entity
* @ORM\Table(name="JEP_User")
* @ORM\Entity(repositoryClass="Chrchel\JepBundle\Repository\UserRepository")
*/
class User implements AdvancedUserInterface {
/**
* @ORM\Id()
* @ORM\Column(name="id",type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="username",type="string",length=100,unique=true)
*/
private $username;
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
*
*/
protected $roles;
//....
}
Rôle de la classe:
/**
* @ORM\Table(name="JEP_Role")
* @ORM\Entity()
*/
class Role implements RoleInterface {
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/** @ORM\Column(name="name", type="string", length=30) */
protected $name;
/** @ORM\Column(name="role", type="string", length=20, unique=true) */
protected $role;
/** @ORM\ManyToMany(targetEntity="User", mappedBy="roles") */
protected $users;
//...
}
Je ne peux pas comprendre comment composer générateur de requêtes dans Symfony2 à la liste de tous les rôles qui existe et l'ajouter à la fin de l'UserForm où peuvent être sélectionnés (que des cases à cocher) les rôles accordés à l'utilisateur.
J'ai essayé d'utiliser la collection de ce genre dans UserType
->add('roles', 'collection',array('label' => 'Role', 'required' => false,'type'=> new RoleType()))
Le meilleur que je reçois de symfony sont les lignes avec des zones de texte avec une sélection de noms de rôles. Mais ce n'est pas, ce dont j'ai besoin.
Vous devez vous connecter pour publier un commentaire.
J'ai utilisé type d'entité au lieu de la collecte. Je chose que la collection est principalement utilisé pour réellement créer un
Role
de l'objet et de l'attribuer àUser
.Si vous voulez juste la liste de tous les rôles existants et être en mesure de sélectionner et attribuer à l'utilisateur:
MODIFIER: cela permettra de rendre le widget comme un multiple
<select>
, reportez-vous à type d'entité rendu comme liste de case à cocher.expanded
option pourtrue
d'avoir une liste de case à cocher. Et Vous avez besoin pour mettre en œuvre les__toString()
méthode surRole
modèle (utilisé pour afficher l'étiquette à côté de chaque case.getRolesAsCollection
et où?Symfony3:
Au cas où quelqu'un est à l'aide de Symfony3:
@user1041880: Si vous utilisez la commande des fonctions de sécurité (qui doit les rôles de th euser comme un tableau), vous pouvez le faire comme ceci:
Et dans votre classe d'utilisateur: