Bonjour,
j'essaie tant bien que mal à envoyer des données en post pour enregistrer un utilisateur via le formulaire de FOSUserBundle.
Mais dans mon controlleur le form ne se soumet pas et je n'arrive pas à comprendre pourquoi...
mon controlleur :
ça fonctionne quand il me le génère sur une vue twig et que je lui renvoie.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 /** * * Post Form to register a new user * * @param Request $request * * @Rest\View() * @Rest\Post() * * @return Response */ public function postRegistrationFormAction(Request $request) { /** @var $userManager UserManagerInterface */ $userManager = $this->get('fos_user.user_manager'); /** @var $dispatcher EventDispatcherInterface */ $dispatcher = $this->get('event_dispatcher'); /** @var User $user */ $user = $userManager->createUser(); $user->setEnabled(true); $event = new GetResponseUserEvent($user, $request); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_INITIALIZE, $event); if(null !== $event->getResponse()) { return $event->getResponse(); } $form = $this->get('form.factory')->create(RegistrationType::class, $user, array('csrf_token_id'=>false)); $form->setData($user); $form->handleRequest($request); if($form->isSubmitted()) { if($form->isValid()) { $event = new FormEvent($form, $request); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_SUCCESS, $event); $user = $this->transferUserDataIfExisting($user); $user->setDateInscription(new \DateTime()); $userManager->updateUser($user); if(null === $response = $event->getResponse()) { $url = $this->generateUrl('fos_user_registration_confirmed'); $response = new RedirectResponse($url); } $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response)); return $response; } $event = new FormEvent($form, $request); $dispatcher->dispatch(FOSUserEvents::REGISTRATION_FAILURE, $event); if(null !== $response = $event->getResponse()) { return $response; } } return $form; }
mais pas moyen de renvoyer le formulaire en POST en dehors de ça...
par exemple sur une page HTML je le renvoie comme ceci :
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 <form name="app_user_registration" action="url-vers-le-controlleur-ci-dessus" method="post"> <div id="app_user_registration"> <div> <label for="app_user_registration_email" class="required">form.email</label> <input type="email" id="app_user_registration_email" name="app_user_registration[email]" required="required" /> </div><div> <label for="app_user_registration_username" class="required">form.username</label> <input type="text" id="app_user_registration_username" name="app_user_registration[username]" required="required" maxlength="180" pattern=".{2,}" /> </div><div> <label for="app_user_registration_plainPassword_first" class="required">form.password</label> <input type="password" id="app_user_registration_plainPassword_first" name="app_user_registration[plainPassword][first]" required="required" /> </div><div> <label for="app_user_registration_plainPassword_second" class="required">form.password_confirmation</label> <input type="password" id="app_user_registration_plainPassword_second" name="app_user_registration[plainPassword][second]" required="required" /> </div><div> <label for="app_user_registration_lastName" class="required">Last name</label> <input type="text" id="app_user_registration_lastName" name="app_user_registration[lastName]" required="required" /> </div><div> <label for="app_user_registration_firstName" class="required">First name</label> <input type="text" id="app_user_registration_firstName" name="app_user_registration[firstName]" required="required" /> </div> </div> <input type='submit' /> </form>
Partager