验证复选框未映射到符号2表单中的实体


Validate checkbox not mapped to entity in a symfony2 form

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

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

但是NotBlank()约束不起作用!只有当我将类型从"checkbox"更改为"text"时,它才能按预期工作。那么,我如何验证复选框呢?当然,我也尝试过使用"True()"、"EqualTo()"answers"Length(…)"约束。但没有成功。我还为该字段尝试了不同的POST值(1/0、true/false、on/off…)。

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

ThanxStef

NotBlank验证字符串是否为空。尝试使用NotNull

IsTrue也必须有效。

验证值是否为真。具体来说,这会检查该值正好为true,正好为整数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')));
}