13

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

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

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

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

感谢史蒂夫

4

2 回答 2

16

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

IsTrue也必须有效。

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

于 2013-08-12T05:31:17.257 回答
10

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')));
}
于 2016-07-12T20:54:40.540 回答