title: symfony2 : form errors not displayed in twig despite a non null getErrorsAsString()
body: <p>I am using symfony 2 and I have a form on which I put @Assert\NotBlank() annotations.
  I am volontarily filling the fields, my form does not pass the isValid and isSubmitted test and after those lines I get a non-null value for exit(var_dump($recipeForm->getErrors()));</p>
  
  <pre><code>  private 'errors' =&gt; 
      array (size=4)
        0 =&gt; 
          object(Symfony\Component\Form\FormError)[4119]
            private 'message' =&gt; string 'Cette valeur doit Ãªtre vide.' (length=29)
            protected 'messageTemplate' =&gt; string 'This value should be blank.' (length=27)
            protected 'messageParameters' =&gt; 
              array (size=1)
                ...
            protected 'messagePluralization' =&gt; null
            private 'cause' =&gt; 
              object(Symfony\Component\Validator\ConstraintViolation)[4062]
                ...
            private 'origin' =&gt; null
  </code></pre>
  
  <p>In my twig template I render the form with a simple form(form). form_errors(form) or form_errors(form.field) won't render the errors. Why? Why could I do to further understand where the issue comes from?</p>
  
  <p>I have a pretty complicated type. for some other forms of my website, the errors are correctly displayed.
  My type:</p>
  
  <pre><code>&lt;?php
  //src/AppBundle/Form/FoodAnalytics/RecipeType.php
  namespace AppBundle\Form\FoodAnalytics;
  
  use AppBundle\Form\Core\MediaType;
  use AppBundle\Repository\FoodAnalytics\UnitRepository;
  use Symfony\Component\Form\AbstractType;
  use Symfony\Component\Form\FormBuilderInterface;
  use Symfony\Component\OptionsResolver\OptionsResolverInterface;
  
  class RecipeType extends AbstractType
  {
      protected $recipeIngredientQueryBuilder;
      protected $recipeSubrecipeQueryBuilder;
      protected $unitRepository;
      protected $action;
  
      /**
       * @return string
       */
      public function getName()
      {
          return 'appbundle_foodanalytics_recipe' . $this-&gt;action;
      }
  
      public function __construct(UnitRepository $unitRepository, $recipeIngredientQueryBuilder=null, $recipeSubrecipeQueryBuilder=null, $action = null)
      {
          $this-&gt;recipeIngredientQueryBuilder = $recipeIngredientQueryBuilder;
          $this-&gt;recipeSubrecipeQueryBuilder = $recipeSubrecipeQueryBuilder;
          $this-&gt;unitRepository = $unitRepository;
          $this-&gt;action = $action == null ? null : '_' . $action;
      }
  
      /**
       * @param FormBuilderInterface $builder
       * @param array $options
       */
      public function buildForm(FormBuilderInterface $builder, array $options)
      {
          $builder
              -&gt;add('recipeCategories', 'genemu_jqueryselect2_entity',array(
                      'multiple' =&gt; true,
                      'class' =&gt; 'AppBundle:FoodAnalytics\RecipeCategory',
                      'label' =&gt; 'Catégories',
                      'required' =&gt; false,
                      'by_reference' =&gt; false,
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Indiquez les catégories dans lesquelles enregistrer la recette pour un recherche future plus facile",
                      )))
              -&gt;add('isProduct', null, array(
                      'label'=&gt;'Correspond à un produit fini',
                      'required'=&gt;false,
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"La recette correspond-elle à un produit fini qui peut être mis en vente ?",
                      )))
              -&gt;add('name', null, array(
                      'label'=&gt;'Nom détaillé',
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Indiquez le nom détaillé de la recette. Par exemple : 'millefeuilles praliné ganache vanille sur feuilletage inversé'",
                      )))
              -&gt;add('nickName', null, array(
                      'label'=&gt;'Nom raccourci',
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Indiquez un nom raccourci pour la recette. Par exemple : 'millefeuilles'",
                      )))
              -&gt;add('recipeIngredients', 'collection', array(
                      'type' =&gt; new RecipeIngredientType($this-&gt;unitRepository, $this-&gt;recipeIngredientQueryBuilder),
                      'by_reference' =&gt; false,
                      'label'=&gt;'Ingrédient',
                      'allow_add' =&gt; true,
                      'allow_delete' =&gt; true,
                      'cascade_validation' =&gt; true,
                  ))
              -&gt;add('subrecipes', 'collection', array(
                      'type' =&gt; new RecipeSubrecipeType($this-&gt;unitRepository, $this-&gt;recipeSubrecipeQueryBuilder),
                      'by_reference' =&gt; false,
                      'label'=&gt;'Sous-recette',
                      'allow_add' =&gt; true,
                      'allow_delete' =&gt; true
                  ))
              -&gt;add('recipeSteps', 'collection', array(
                      'type' =&gt; new RecipeStepType(),
                      'by_reference' =&gt; false,
                      'label'=&gt;'Etape de production',
                      'allow_add' =&gt; true,
                      'allow_delete' =&gt; true
                  ))
              -&gt;add('portions', null, array(
                      'label'=&gt;'Nombre de parts / de pièces',
                      'required' =&gt; false,
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Indiquez le nombre d'éléments disponibles dans la recette. Cela peut permettre d'utiliser l'unité 'U' dans les recettes parentes qui l'utiliseront",
                      )))
              -&gt;add('shortDescription', null, array(
                      'label'=&gt;'Description courte',
                      'required'=&gt;false,
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Décrivez succinctement la recette",
                      )))
              -&gt;add('medias', 'collection', array(
                      'type' =&gt; new MediaType(),
                      'by_reference' =&gt; false,
                      'label'=&gt;'Medias',
                      'allow_add' =&gt; true,
                      'allow_delete' =&gt; true,
                      'required' =&gt; false,
                      'attr'=&gt;array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Ajoutez des images ou vidéos pour décrire la recette",
                      )))
              -&gt;add('content', 'textarea', array(
                      'label'=&gt;'Instructions générales',
                      'required'=&gt;false,
                      'attr' =&gt; array(
                          'data-toggle'=&gt;"tooltip",
                          'data-placement'=&gt;"top",
                          'class' =&gt; 'summernote',
                          'title'=&gt;"Ajoutez du contenu supplémentaire pour détailler la recette",
                      )))
              -&gt;add('workingDuration', 'timepicker', array(
                          'label'=&gt;'Temps total de travail',
                          'required' =&gt; false,
                          'attr'=&gt;array
                          (
                              'class' =&gt; 'timepicker',
                              'data-toggle'=&gt;"tooltip",
                              'data-placement'=&gt;"top",
                              'title'=&gt;"Indiquez le temps total de travail consacré à la recette si il diffère du temps de travail cumulé des étapes de production",
                          )))
              -&gt;add('sleepDuration', 'timepicker', array(
                      'label'=&gt;'Temps total de repos',
                      'required' =&gt; false,
                      'attr'=&gt;array
                      (
                          'data-toggle'=&gt;"tooltip",
                          'class'=&gt;'timepicker',
                          'data-placement'=&gt;"top",
                          'title'=&gt;"Indiquez le temps total de repos consacré à la recette si il diffère du temps de repos cumulé des étapes de production",
                      )))
          ;
      }
  
      /**
       * @param OptionsResolverInterface $resolver
       */
      public function setDefaultOptions(OptionsResolverInterface $resolver)
      {
          $resolver-&gt;setDefaults(array(
              'data_class' =&gt; 'AppBundle\Entity\FoodAnalytics\Recipe',
  //            'cascade_validation' =&gt; true,
          ));
      }
  }
  </code></pre>
  
  <p>EDIT: keeping only one simple field of this form does not change anything, the error won't get shown</p>