Symfony 2: option "validation_constraint" does not exist

I have a very simple form without a class. I made some elements with restriction options, but form validation does not work.
I read several places ( for example, here ) I can add the validation_constraint parameter, which is an instance of \Symfony\Component\Validator\Constraints\Collection .

When I try, I always get an error message:

The validation_constraint parameter does not exist. The following options are known: ... blabla

My form:

 $collectionConstraint = new \Symfony\Component\Validator\Constraints\Collection( array( 'customer' => new \Symfony\Component\Validator\Constraints\NotBlank(), 'customer_address' => new \Symfony\Component\Validator\Constraints\NotBlank(), 'customer_address_postal' => new \Symfony\Component\Validator\Constraints\NotBlank(), 'paymentDeadline' => new \Symfony\Component\Validator\Constraints\Date(), 'fulfillmentDate' => new \Symfony\Component\Validator\Constraints\Date(), 'currency' => new \Symfony\Component\Validator\Constraints\Choice(array( 'choices' => $currency_entities )), 'paymode' => new \Symfony\Component\Validator\Constraints\Choice(array( 'choices' => $paymode_entities )) ) ); $form = $this->createFormBuilder(null,array( 'validation_constraint' => $collectionConstraint )) ->add('customer','choice',array( 'choice_list'=> $customer_choices, 'multiple' => false, 'required' => true, 'empty_value' => '', 'attr' => array( 'class' => 'chosen large', ) )) ->add('customer_address','choice',array( 'multiple' => false, 'required' => true, 'empty_value' => '', 'attr' => array( 'class' => 'chosen large' ) )) ->add('customer_address_postal','choice',array( 'multiple' => false, 'required' => true, 'empty_value' => '', 'attr' => array( 'class' => 'chosen large' ) )) ->add('paymentDeadline','date',array( 'input' => 'datetime', 'widget' => 'single_text', 'required' => true, 'attr' => array( 'class' => 'date-picker m-ctrl-medium', 'addon' => 'icon-calendar', ) )) ->add('fulfillmentDate','date',array( 'input' => 'datetime', 'widget' => 'single_text', 'required' => true, 'attr' => array( 'class' => 'date-picker m-ctrl-medium', 'addon' => 'icon-calendar', ) )) ->add('currency','choice',array( 'required' => true, 'choice_list' => $curreny_choices )) ->add('paymode','choice',array( 'required' => true, 'choice_list' => $paymode_choices )) ->add('subject','text',array( 'required' => false, 'attr' => array( 'class' => 'span8' ) )) ->add('comment','textarea',array( 'required' => false, 'attr' => array( 'class' => 'span8', 'rows' => 5 ) )) ; 

Symfony Version 2.3.3.

What could be the problem?

+4
source share
1 answer

Validation should be applied to each field using the constraints option, and not in the form builder.
So your code should look like this:

 use \Symfony\Component\Validator\Constraints\NotBlank; use \Symfony\Component\Validator\Constraints\Date; use \Symfony\Component\Validator\Constraints\Choice; $form = $this->createFormBuilder(null) ->add('customer','choice',array( 'choice_list'=> $customer_choices, 'multiple' => false, 'required' => true, 'empty_value' => '', 'attr' => array( 'class' => 'chosen large', ), 'constraints' => new NotBlank() )) ->add('customer_address','choice',array( 'multiple' => false, 'required' => true, 'empty_value' => '', 'attr' => array( 'class' => 'chosen large' ), 'constraints' => new NotBlank() )) ->add('customer_address_postal','choice',array( 'multiple' => false, 'required' => true, 'empty_value' => '', 'attr' => array( 'class' => 'chosen large' ), 'constraints' => new NotBlank() )) ->add('paymentDeadline','date',array( 'input' => 'datetime', 'widget' => 'single_text', 'required' => true, 'attr' => array( 'class' => 'date-picker m-ctrl-medium', 'addon' => 'icon-calendar', ), 'constraints' => new Date() )) ->add('fulfillmentDate','date',array( 'input' => 'datetime', 'widget' => 'single_text', 'required' => true, 'attr' => array( 'class' => 'date-picker m-ctrl-medium', 'addon' => 'icon-calendar', ), 'constraints' => new Date() )) ->add('currency','choice',array( 'required' => true, 'choice_list' => $curreny_choices, 'constraints' => new Choice(array( 'choices' => $currency_entities )), )) ->add('paymode','choice',array( 'required' => true, 'choice_list' => $paymode_choices, 'constraints' => new Choice(array( 'choices' => $paymode_entities )) )) ->add('subject','text',array( 'required' => false, 'attr' => array( 'class' => 'span8' ) )) ->add('comment','textarea',array( 'required' => false, 'attr' => array( 'class' => 'span8', 'rows' => 5 ) )) ; 

Note. I added some use statements at the top to clear the code.

http://symfony.com/doc/current/book/forms.html#adding-validation

+2
source

Source: https://habr.com/ru/post/1496148/


All Articles