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
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 !!!
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.
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.