Symfony2:表单集合的验证

时间:2015-02-27 21:23:22

标签: forms validation symfony collections

我在表单中有一个元素集合。我想对这些元素应用验证规则,但是对于更新的元素和新创建的元素,规则必须不同。

Ex:4个元素的集合。添加第5个元素,只需对此元素进行检查。更新第3个元素,必须在此元素上进行另一个检查。删除第1个元素,应进行第3次检查。

怎么可能? (注意:我使用Propel)

1 个答案:

答案 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-datahttp://symfony.com/doc/current/book/forms.html#validation-groups

如果还不够,您可以在类约束上创建自己的验证器:http://symfony.com/doc/current/cookbook/validation/custom_constraint.html#class-constraint-validator并使用Propel知道哪个字段已更新。

希望它有所帮助。

此致

相关问题