【发布时间】:2015-02-27 21:23:22
【问题描述】:
我在表单中有一组元素。我想对这些元素应用验证规则,但更新的元素和新创建的元素的规则必须不同。
例如:4 个元素的集合。添加第 5 个元素,只需要对该元素进行检查。更新第 3 个元素,必须仅在此元素上进行另一次检查。删除第 1 个元素,进行第 3 次检查。
这怎么可能? (注:我用的是 Propel)
【问题讨论】:
标签: forms validation symfony collections
我在表单中有一组元素。我想对这些元素应用验证规则,但更新的元素和新创建的元素的规则必须不同。
例如:4 个元素的集合。添加第 5 个元素,只需要对该元素进行检查。更新第 3 个元素,必须仅在此元素上进行另一次检查。删除第 1 个元素,进行第 3 次检查。
这怎么可能? (注:我用的是 Propel)
【问题讨论】:
标签: forms validation symfony collections
您可以使用不同的验证组来执行此操作。 在您的表单类型中,您可以确定与闭包一起使用的验证组。
'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 来了解更新了哪个字段。
希望对你有帮助。
问候
【讨论】: