为特定验证组的mapped = false字段添加验证约束

时间:2013-07-31 05:39:28

标签: forms validation symfony

我希望能够为Form类添加特定验证组的附加验证约束。我怎么能这样做?

从Symfony 2.1开始,在构建表单时添加验证如下所示:

use Symfony\Component\Validator\Constraints\MinLength;
use Symfony\Component\Validator\Constraints\NotBlank;

$builder
    ->add('firstName', 'text', array(
        'constraints' => new MinLength(3),
    ))
    ->add('lastName', 'text', array(
        'constraints' => array(
            new NotBlank(),
            new MinLength(3),
        ),
    ))
;

sources

有没有办法将它们分配给验证约束?

就我而言,我有validation groups depending on submitted data

提前感谢您的建议

1 个答案:

答案 0 :(得分:3)

好的,实际上解决方案非常简单。

查看Constraint类,我注意到了公开的$ groups属性和addImplicitGroupName(string $ group)方法。

当你知道这一点时,你就知道了一切:

$cv1 = new NotBlank();
$cv1->groups = array('myGroup');
$cv2 = new NotNull();
$cv2->groups = array('myGroup');
$myCnstrs = array(
    'constraints' => array(
         $cv1,
         $cv2,
     )
);

$myOtherOptions = array(
     ...
);

$builder->add('myField', null, array_merge($myCnstrs,$myOtherOptions));

很抱歉,如果我在发布问题并在...之后立即回复而被滥用。