Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Validate checkbox not mapped to entity in a symfony2 form

I add a non mapped field to a symfony2 form type:

$builder->add('terms','checkbox', array('mapped' => false,
        'constraints' => array(new NotBlank())));

But the NotBlank() constraint is not working! Only if I change the type from 'checkbox' to 'text' it is working as expected. So how can I validate a checkbox? Of course I tried with 'True()', 'EqualTo()' and 'Length(...)' constraints too. But without success. I also tried different POST values (1/0, true/false, on/off...) for the field.

What is the big difference between a checkbox field and a text field regarding form field validation in symfony2?

Thanx Stef

like image 581
kieste Avatar asked Aug 11 '13 23:08

kieste


2 Answers

NotBlank validates string to be not empty. Try to use NotNull

IsTrue must also works.

Validates that a value is true. Specifically, this checks to see if the value is exactly true, exactly the integer 1, or exactly the string "1". This constraint can be applied to properties (e.g. a termsAccepted property on a registration model).

like image 70
Alexey B. Avatar answered Nov 09 '22 11:11

Alexey B.


Updated answer for Symfony 3.0:

use Symfony\Component\Form\Extension\Core\Type\CheckboxType;
use Symfony\Component\Validator\Constraints\IsTrue;

// ...
{
    $builder->add('terms', CheckboxType::class, array('constraints'=>new IsTrue(array('message'=>'Needs to be clicked')));
}
like image 10
Thomas Landauer Avatar answered Nov 09 '22 11:11

Thomas Landauer