我在表单中有一个元素集合。我想对这些元素应用验证规则,但是对于更新的元素和新创建的元素,规则必须不同。
Ex:4个元素的集合。添加第5个元素,只需对此元素进行检查。更新第3个元素,必须在此元素上进行另一个检查。删除第1个元素,应进行第3次检查。
怎么可能? (注意:我使用Propel)
答案 0 :(得分:1)
您可以使用不同的验证组来执行此操作。 在表单类型中,您可以确定要与Closure一起使用的验证组。
'validation_groups' => function(FormInterface $form) {
$data = $form->getData();
if (Client::TYPE_PERSON == $data->getType()) {
return array('person');
}
return array('company');
},
请参阅http://symfony.com/doc/current/book/forms.html#groups-based-on-the-submitted-data和http://symfony.com/doc/current/book/forms.html#validation-groups
如果还不够,您可以在类约束上创建自己的验证器:http://symfony.com/doc/current/cookbook/validation/custom_constraint.html#class-constraint-validator并使用Propel知道哪个字段已更新。
希望它有所帮助。
此致