symfony2 forme de la sélection multiple avec type arraycollection
Je voudrais créer un formulaire pour modifier mes utilisateurs.
Les utilisateurs et les rôles connecté avec ManyToMany.
Dans UserUsers entité j'ai un $rôles variable qui est ArrayCollection
:
public function __construct()
{
$this->roles = new ArrayCollection();
}
Dans mon formulaire je voudrais ajouter des rôles à mes utilisateurs par le biais de multiples sélectionnez l'élément de formulaire.
Dans mon formulaire utilisateur:
public function buildForm( FormBuilderInterface $builder, array $options ) {
$builder->add( 'username' )
->add( 'password', 'repeated', array(
'type' => 'password',
'mapped' => false,
'required' => false,
'first_options' => array(
'label' => 'Password' ),
'second_options' => array(
'label' => 'Repeat Password' ) ) )
->add( 'roles', 'choice', array(
'mapped' => false,
'multiple' => true ) );
}
Maintenant mon choix multiple est vide.
Si je tourne mappé pour vrai, j'ai un message d'erreur:
UserRoles n'a pas pu être converti en int...
J'en ai essayé beaucoup de moyens, mais je ne pouvais pas résoudre ce problème correctement.
Ce type avez-vous dans votre $rôles de type arraycollection?
Tous les éléments de $rôles de type arraycollection est une entité (UserRoles).
Pour un choix d'entités, vous devez utiliser le type de champ choice "entité" (symfony.com/doc/current/reference/forms/types/entity.html). Pour un exemple, voir ma réponse à une question similaire, - stackoverflow.com/questions/13519961/...
Ok, j'ai changé de rôles comme ceci:
C'est bizarre, comme type arraycollection met en œuvre la Doctrine\Common\Collections\Collection. Est-il possible que les rôles() est réaffecté à un tableau d'ailleurs? Ou de type arraycollection ne se résout pas à la doctrine de la classe?
Tous les éléments de $rôles de type arraycollection est une entité (UserRoles).
Pour un choix d'entités, vous devez utiliser le type de champ choice "entité" (symfony.com/doc/current/reference/forms/types/entity.html). Pour un exemple, voir ma réponse à une question similaire, - stackoverflow.com/questions/13519961/...
Ok, j'ai changé de rôles comme ceci:
$builder->add( 'roles', 'entity', array( 'class' => 'AcmeUserBundle:UserRoles', 'multiple' => true, 'property' => 'name' ) );
Puis j'ai eu un message d'erreur: argument de type "Doctrine\Common\Collections\" Collection", "array" donnéC'est bizarre, comme type arraycollection met en œuvre la Doctrine\Common\Collections\Collection. Est-il possible que les rôles() est réaffecté à un tableau d'ailleurs? Ou de type arraycollection ne se résout pas à la doctrine de la classe?
OriginalL'auteur lordjancso | 2013-05-09
Vous devez vous connecter pour publier un commentaire.
Pour un choix d'entités, vous devez utiliser le type de champ choice "entité" (voir Symfony manuel pour entité de type de champ). Pour un exemple, voir ma réponse à un question similaire.
Si vous obtenez d'autres erreurs, vous pouvez également trouver cette question sur Rôle d'Interface et de Gérer des Rôles utile.
OriginalL'auteur redbirdo
pour le fosuserbundle je le fais comme ça:
J'ai déjà entendu et je recommande fortement l'utilisation de FOSUserBundle - en Raison de la sécurité. De là, vous pouvez stocker plusieurs rôles à un utilisateur. C'est la fin ce que vous voulez.
OriginalL'auteur stwe