Bonsoir,
J'essaye de mettre en place un formulaire imbriqué à relations multiples, voici la configuration du modèle;
Une table User et une table Role liées en ManyToMany ()donc une table de transition user_role généré par Symfony2).
Le but est d'afficher un formulaire ajoutant un User avec un Role associé (si possible de pouvoir lister ceux en base et proposer un choix via une checkbox mais je verrai ca par la suite).
J'ai donc modifier mon UserType.php comme suit (le champ commenté a été généré automatiquement par crud):
Et voici mon controller simplifié au niveau du traitement du formulaire:
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33 use Doctrine\Common\Collections\ArrayCollection; use Perso\UserBundle\Form\RoleType; class UserType extends AbstractType { public function buildForm(FormBuilder $builder, array $options) { $builder ->add('login') ->add('password') ->add('salt') ->add('prenom') ->add('nom') ->add('email') ->add('tel') //->add('userRoles') ->add('usersRoles', 'collection', array('type' => new RoleType)); ; } public function getName() { return 'perso_userbundle_usertype'; } public function getDefaultOptions(array $options) { return array( 'data_class' => 'Perso\UserBundle\Entity\User', ); } }
Avec ces deux persist, la table user_role va t-elle se mettre à jour automatiquement ?
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
20
21
22
23
24
25
26
27 class AuthController extends Controller { public function registerAction() { $request = $this->getRequest(); $form = $this->createForm(new UserType()); if ($request->getMethod() == "POST") { $form->bindRequest($request); if ($form->isValid()) { $user = $form->getData(); $em = $this->getDoctrine()->getEntityManager(); $em->persist($user); foreach ($user->getRoles() as $role) $em->persist($role); $em->flush(); return $this->redirect($this->generateUrl('home')); } } return $this->render('PersoMainBundle:Admin:register.html.twig', array('form' => $form->createView())); } }
Sinon le problème que je rencontre, c'est que d'après le tuto que je suis, je suis censé trouvé une div généré par Symfony 2 dans le code source de ma page, ayant pour id quelque chose comme "<div id="perso_userbundle_usertype_roles">" et un "data-prototype=", je retrouve bien cette div vide pour cet id mais le problème est que je n'ai pas ce fameux "data-prototype=", voici mon code:
Pourtant sur mon template, j'ai bien les champs de mon User qui s'affichent dans le formulaire, et un 'UsersRoles' à la fin.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <div> <label class=" required">Usersroles</label> <div id="perso_userbundle_usertype_usersRoles"></div> </div>
Quelle étape ais-je pu louper pour ne pas trouvé cette div dans ma page ? Merci !
Partager