Salut à tous,
Je cherche à mettre en place le formulaire de création d'utilisateur. Pour cela j'ai besoin de renseigner le role qu'aura mon nouvel utilisateur.
J'aimerais donc avoir un champ de type select afin que l'admin puisse choisir un role parmis une liste (ecrit en dur pour le moment) de roles.
Etant donné que le composant securité de Symfony se base sur un type array pour travailler avec les roles je dois faire avec.
Ainsi comme l'option choice du formulaire se base sur un tableau de string je dois effectuer des conversions pour travailler avec mon form et l'entity User.
J'ai donc une classe transformer afin de transformer dans les 2 sens (array -> string ou string -> array) les données du role pour l'entity ou la form.
Néanmoins j'ai encore une erreur :auriez-vous des pistes de recherche afin de mettre en place mon champ role du formulaire de création d'utilisateur ?ContextErrorException: Notice: Array to string conversion
création de mon champ dans la classe de mon form :
ma classe transformer :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 $builder->add($builder->create('roles','choice',array( 'choices' => array('1' => 'ROLE_ADMIN','2' => 'ROLE_CONTRIB') ))->addViewTransformer($transformer));
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 use Symfony\Component\Form\DataTransformerInterface; use Symfony\Component\Form\Exception\TransformationFailedException; class StringToArrayTransformer implements DataTransformerInterface { public function transform($array) { var_dump($array); return $array[0]; } public function reverseTransform($string) { return array($string); } }
l'action de mon Controller :
PS : je sais qu'il existe FOSUserBundle mais je ne souhaite pas l'utiliser
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public function addAction(Request $request) { $user = new User(); //init entity $form = $this->createForm(new UserForm(), $user); //update de l'objet si form soumis $form->handleRequest($request); //validation de l'objet if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $em->persist($form); $em->flush(); return $this->redirect($this->generateUrl('task_success')); } return $this->render('MonBundle:Admin:usersAdd.html.twig', array('form' => $form->createView())); }
En vous remerciant de votre précieuse contribution.
Partager