我将一个未映射的字段添加到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')));
}