In symfony 2 incorporare i form è davvero facile come mostrato nella guida ufficiale di Symfony per la creazione e l’associazione di due form.

In questo tip parleremo della validazione in cascata di sottoform.

Supponiamo di avere un ProductForm che incorpora CategoryForm, entrambi con annotazioni che impostano i diversi vincoli di validazione per ciascuna classe. Seguendo la guida scriveremmo in ProductForm:

$builder->add('category', new CategoryForm());

Ci aspettiamo che CategoryForm sia inglobato in ProductForm e ciascun campo automaticamente validato in base ai vincoli di validazione di CategoryForm e ProductForm.

Noteremo con stupore, che dalla versione 2.1 di Symfony CategoryForm non viene validato automaticamente.

Questo è dovuto all’introduzione di un settaggio specifico dei form: cascade_validation

Il parametro, infatti, suggerisce al form builder, se validare il form incorporato. Di default questo settaggio è impostato a false, quindi per validare il nostro sottoform con i vincoli di validazione specificati nella classe, c’è bisogno di esplicitare a true l’opzione nella classe CategoryForm, nella funzione setDefaultOptions :

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'namespace\entita\correlata',
'cascade_validation' => true,
));
}

Così facendo, ProductForm provvederà a validare anche tutti i campi di CategoryForm.

www.it4test.com
100-101
200-120
350-001
350-018
640-460
640-461
70-177
70-178
70-243
70-246
70-270
70-410
70-247
70-460
70-486
70-483
70-413
70-688
70-415
70-337
300-320
SY0-401
000-017
000-080
000-089
000-104
000-105
000-106
642-416
642-584
642-618
644-066
70-243-study-material
70-246-practice-test
70-247-braindump
70-331-course
70-332-video-training
70-333-study-material
70-334-questions
70-336-tests
70-337-certification
70-341-tutorials
70-342-certification
70-346-pdf
350-080
646-272
300-070
642-871
352-011
210-060
300-135
350-018
640-692
350-030
810-403
210-260
642-832
350-030
640-911
400-051
70-534
MB6-703
70-336
C4090-958
000-622
hp2-h33
1z0-821
hp0-y50
hat-680
e20-593
hp2-w100
98-367
ahm-540
ahm-530
70-692
70-297
100-101
200-101
200-120
350-001
350-018
117-101
117-102
117-201
117-202