Bonjour, j'ai un problème avec l'utilisation de FOSUserBundle, je m'explique : Lors de l'enregistrement d'un nouvel utilisateur, je souhaite laissé à l'utilisateur de choisir son un role. J'ai surchargé le formulaire "RegistrationFormType" de FOS comme le dit la documentation mais j'ai cette erreur quand je veux enregistrer un utilisateur : Catchable Fatal Error: Argument 1 passed to FOS\UserBundle\Model\User::setRoles() must be an array, string given, called in C:\wamp\www\symfony\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php on line 438 and defined

J'ai fait une surcharge du controller Register de FOS, mais ça ne marche pas.
Si quelqu'un peut bien m'aider

10 réponses


Vallyan
Réponse acceptée

tu allow multiple pour les roles ?

Blondin69
Réponse acceptée

Je pense que tu as due oublié de mettre ton champs dans le formulaire en type "collection" ( le multiple n'est pas nécessaire )

 $builder
           ->add('roles', 'collection', array(
                   'type' => 'choice',
                   'options' => array(
                       'label' => false, /* Ajoutez cette ligne */
                       'choices' => array(
                           'ROLE_ADMIN' => 'Admin',
                           'ROLE_EDITOR' => 'Editor'
                       )
                   )
               )
           )
       ;

PS : je tiens a préciser que la réponse se trouve sur le premier lien quand on tape "fosuserbundle roles form" dans google... argh !!!

Tu veux dire dans mon "Registerfomtype" ?

J'ai bouclé le sujet sans faire exprès, j'ai toujours pas résolu mon problème, si vous pouvez bien m'aider

comme indiqué ici, si tu mets l'option multiple a true dans ton formBuilder pour le champs des roles (je suppose que c'est un type choice), la valeur retournée est un array. Or c'est justement un array qui est attendu par FOS\UserBundle\Model\User::setRoles().
Donc a priori si tu ajoutes cette option tu devrais résoudre ton problème.

J'ai bel et bien mis multiple à true, mais j'ai tjrs ce problème.

Personne pour m'aider ?

Ton problème est plutot simple a comprendre: le formulaire envoie un string alors qu'il faut un array. C'est étrange que l'ajout de multiple dans les options de ton "choice" ne résolve pas ton problème, mais c'est de toute facon dans cette direction qu'il faut chercher.

MeMerci beaucoup. Ms Entre temps j'avais trouvé une autre solution.

oui je viens de voir que ça faisait deux mois... mais bon sa peut toujours servir