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

Php 验证复选框未映射到symfony2表单中的实体,php,forms,validation,symfony,checkbox,Php,Forms,Validation,Symfony,Checkbox,我将非映射字段添加到symfony2表单类型: $builder->add('terms','checkbox', array('mapped' => false, 'constraints' => array(new NotBlank()))); 但是NotBlank()约束不起作用!只有当我将类型从“复选框”更改为“文本”时,它才能按预期工作。那么如何验证复选框呢?当然,我也尝试了“True()”、“EqualTo()”和“Length(…)”约束。但是没

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

$builder->add('terms','checkbox', array('mapped' => false,
        'constraints' => array(new NotBlank())));
但是NotBlank()约束不起作用!只有当我将类型从“复选框”更改为“文本”时,它才能按预期工作。那么如何验证复选框呢?当然,我也尝试了“True()”、“EqualTo()”和“Length(…)”约束。但是没有成功。我还为字段尝试了不同的POST值(1/0、真/假、开/关…)

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

塔克斯
Stef验证字符串是否为非空。尝试使用
NotNull

它也必须起作用

验证值是否为真。具体来说,这将检查 该值完全为真、完全为整数1或完全为 字符串“1”。此约束可应用于属性(例如,注册模型上的termsAccepted属性)


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')));
}

为了关注您的问题,您应该使用与您的问题相关的最流行的标记来标记它-在这种情况下,我建议您将其中一个标记替换为“constraints”标记,例如“constraints”标记为“PHP”。用于我验证复选框,谢谢。