Bonjour,
Je suis toujours en train de tenter de faire fonctionner les appels à des formulaires en modal
Via un formulaire modal, je permets à l'utilisateur de modifier une adresse existante. Cette adresse se base sur une entité dont l'attribut 'street' ne peut pas être 'blank'.
Donc, dans mon entité adresse, j'ai configuré la contrainte NotBlank sur l'attribut street.
Cependant, si cet attribut est vide au moment où l'utilisateur soumet le formulaire, au lieu d'avoir un message de violation de contrainte au niveau du contrôle street, j'ai une erreur au niveau de Symfony.
Pour plus de clarté, voici concrètement comment j'ai mis ceci en place :
Dans mon template appelant le formulaire modal :
Code twig : 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 ... <a href="#" data-toggle="modal" data-target="#profileAddress">Edit</a> ... <div id="profileAddress" tabindex="-1" class="modal fade" role="dialog" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <h4 class="modal-title">Profile address</h4> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">×</span> </button> </div> <div class="modal-body"> {{ render(controller('App\\Controller\\user\\ProfileController::editAddress', { 'advert': advert.id })) }} </div> </div> </div> </div> ...
La fonction du controller appelé :
L'attribut street dans mon entité Address :
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 ... /** * @Route("/user/profile/address/edit/{advert}", name="user.profile.address.edit") * * @param Profile $profile * @param Advert $advert * @param EntityManagerInterface $manager * @param EntityManagerInterface $manager * * @return Response */ public function editAddress(Advert $advert, EntityManagerInterface $manager, Request $request): Response { $profile = $this->getUser()->getProfile(); $profileAddressForm = $this->createForm(ProfileAddressType::class, $profile); $profileAddressForm->handleRequest($request); if ($profileAddressForm->isSubmitted() && $profileAddressForm->isValid()) { $manager->persist($profile); $manager->flush(); $this->addFlash('success', "Your profile address was successfully updated"); return $this->redirectToRoute('advert.vehicle.create', array('id' => $advert->getId())); } return $this->render('user/profile/profileAddress.html.twig', array( 'bodyId' => 'profileUpdate', 'advert' => $advert, 'profileAddressForm' => $profileAddressForm->createView() ) ) ; } ...
Dans mon 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 ... /** * @ORM\Column(type="string", length=255) * * @Assert\NotBlank(message = "The street can't be empty.") * @Assert\Length( * min = 3, * max = 255, * minMessage = "The street must contain at least {{ limit }} characters.", * maxMessage = "The street can't contain more than {{ limit }} characters." * ) */ private $street; ...
Et enfin, voici l'erreur que j'ai lorsque le contrôle street est vide lors de la soumission 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 ... $builder ->add('street', TextType::class) ->add('number', HiddenType::class) ->add('box', HiddenType::class) ->add('zipCode', HiddenType::class) ->add('city', HiddenType::class) ->add('state', HiddenType::class) ->add('country', HiddenType::class) ->add('latitude', HiddenType::class) ->add('longitude', HiddenType::class) ; ...
Je ne vois vraiment pas comment résoudre ce problème.
Quelqu'un aurait une idée?
Merci d'avance pour vos lumières!
Partager