Pense bête : Gestion des erreurs avec les formulaires imbriqués sous Symfony 2.1

Lorsqu’on met en place des formulaires imbriqués avec Symfony 2.1 il ne faut pas oublier que la gestion des formulaires à légèrement été revue entre la version 2.0 et les versions 2.x, comme expliqué dans la notice prévue UPGRADE FROM 2.0 to 2.1.

Il ne faut également pas oublier de consulter la documentation Symfony officielle expliquant le fonctionnement et la mise en place des formulaires imbriqués.

Au sujet des erreurs sur les formulaire imbriqué, cette dernière nous expose comment « faire remonter » les erreurs propres au premier formulaire imbriqué dans le second. Il ne faut pas oublier de préciser au formulaire qui reçoit le premier, qu’il va devoir récupérer des erreurs autres que les siennes en précisant dans la méthode setDefaultOptions() de votre Form comme ceci :

namespace Acme\Bundle\AcmeBundle\Form;

class MyEntityType extends AbstractType
{
    public buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('myotherentity', new MyOtherEntityType());
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver)
    {
        $resolver->setDefaults(array(
            'data_class' => 'Acme\Bundle\AcmeBundle\Entity\MyEntity',
            'cascade_validation' => true
        ));
    }

    ...
}

Le tout couplé avec vos « Assert » sur les champs de vos entitées et une vue exposant correctement les erreurs de vos formulaires comblera la plupart de vos besoins.