Symfony 2.1 validazione a cascata

In Symfony2 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.

One thought on “Symfony 2.1 validazione a cascata”

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>