Ik heb een form met een optionele embedded form. Deze form (alsook de embedded form) is gemapt met mijn entities waarop validation constraints staan. De embedded form heeft een één op één relatie met de hoofdform:
Als bij het invullen van de form geen enkele van de 3 embedded form velden (subvelden) worden ingevuld, blijft het resulterende object op `null` staan. Vanaf 1 van de 3 velden ingevuld is, wordt er een nieuw object aangemaakt.
Stel dat ik bestaande gegevens wil bewerken en de subform bevat reeds een aantal waarden, dan zou ik willen dat bij het leeglaten van de 3 subvelden, de het resulterende object terug op `null` gezet wordt. Ik dacht dit te kunnen bereiken met het `PRE_SUBMIT` form event:
Maar dit blijkt niets van effect te hebben op de data die gesubmit wordt.
In de titel vergeten vermelden: het gaat hier om Symfony 3.2.
code:
1
2
3
4
5
6
7
8
9
10
| veld 1 veld 2 veld 3 +-----------+ | subveld 1 | | subveld 2 | | subveld 3 | +-----------+ veld 4 veld 5 |
Als bij het invullen van de form geen enkele van de 3 embedded form velden (subvelden) worden ingevuld, blijft het resulterende object op `null` staan. Vanaf 1 van de 3 velden ingevuld is, wordt er een nieuw object aangemaakt.
Stel dat ik bestaande gegevens wil bewerken en de subform bevat reeds een aantal waarden, dan zou ik willen dat bij het leeglaten van de 3 subvelden, de het resulterende object terug op `null` gezet wordt. Ik dacht dit te kunnen bereiken met het `PRE_SUBMIT` form event:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| public function buildForm(FormBuilderInterface $builder, array $options) { // ... $builder->addEventListener(FormEvents::PRE_SUBMIT, function(FormEvent $event) { $subFormData = $event->getData(); if ( empty($subFormData['field1']) && empty($subFormData['field2']) && empty($subFormData['field3']) ) { $event->setData(null); } }); // ... } |
Maar dit blijkt niets van effect te hebben op de data die gesubmit wordt.
In de titel vergeten vermelden: het gaat hier om Symfony 3.2.