Bonjour
Je suis en train de tester le composant Form de Symfony mais j'ai du mal à comprendre comment rendre optionnel un formulaire imbriqué (embedded form)
Voici mes deux entités :
Et mes deux formulaires :
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 <?php /** * @ORM\Entity */ class Patient { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ protected $id; /** * @ORM\OneToOne(targetEntity="Address") * @ORM\JoinColumn(name="address_id", referencedColumnName="id", nullable=true) * @Assert\Valid */ protected $address = null; } /** * @ORM\Entity */ class Address { /** * @ORM\Id * @ORM\GeneratedValue * @ORM\Column(type="integer") */ protected $id; /** * @ORM\Column(name="country", type="string", length=255) * @Assert\NotBlank * @Assert\Length(max=255) */ protected $country; }
Ce que je souhaite c'est que mon entité Address soit validée uniquement une adresse est envoyée. Or actuellement, j'ai toujours l'erreur
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 <?php class PatientType extends AbstractType { public function buildForm($builder) { $builder->add('address', AddressType::class, ['required' => false]); } public function configureOptions($resolver) { $resolver->setDefaults([ 'data_class' => Patient::class ]); } } class AddressType extends AbstractType { public function buildForm($builder) { $builder->add('country', TextType::class); } public function configureOptions($resolver) { $resolver->setDefaults([ 'data_class' => Address::class ]); } }quand je n'envoi pas d'adresse.address.country: This value should not be blank.
J'ai vu qu'on pouvait utiliser des groupes de validations donc peut être faut il passer par là mais je préfère demander si y a pas un moyen simple de faire ça
Pour résumé :
$form->handleRequest([]) : pas de validation de l'adresse
$form->handleRequest(["address" => null]) : pas de validation de l'adresse
$form->handleRequest(["address" => ["country" => null]) : validation de l'adresse
Merci
Partager