验证复选框未映射到symfony2表单中的实体

kie*_*ste 11 php forms validation checkbox symfony

我将一个非映射字段添加到symfony2表单类型:

$builder->add('terms','checkbox', array('mapped' => false,
        'constraints' => array(new NotBlank())));
Run Code Online (Sandbox Code Playgroud)

但NotBlank()约束不起作用!只有当我将类型从"复选框"更改为"文本"时,它才能按预期工作.那么如何验证复选框?当然我也试过'True()','EqualTo()'和'Length(...)'约束.但没有成功.我还尝试了不同的POST值(1/0,真/假,开/关......).

关于symfony2中表单字段验证的复选框字段和文本字段之间的最大区别是什么?

Thanx Stef

Ale*_* B. 13

NotBlank验证字符串不为空.尝试使用NotNull

真的也必须奏效.

验证值是否为true.具体来说,这将检查值是否完全正确,正好是整数1,还是字符串"1".此约束可以应用于属性(例如,注册模型上的termsAccepted属性).

  • [True](http://symfony.com/doc/current/reference/constraints/True.html) 对我有用以验证复选框,谢谢。 (2认同)

Tho*_*uer 9

更新了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')));
}
Run Code Online (Sandbox Code Playgroud)