【问题标题】:Symfony2: validation of form collectionSymfony2:表单集合的验证
【发布时间】:2015-02-27 21:23:22
【问题描述】:

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

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

这怎么可能? (注:我用的是 Propel)

【问题讨论】:

    标签: forms validation symfony collections


    【解决方案1】:

    您可以使用不同的验证组来执行此操作。 在您的表单类型中,您可以确定与闭包一起使用的验证组。

    '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 来了解更新了哪个字段。

    希望对你有帮助。

    问候

    【讨论】:

    • 感谢您的反馈。我正在寻找使用自定义验证器。知道如何使用 Propel 来了解集合的哪个字段或元素被更新了吗?
    • 我不使用 Propel,但在 Doctrine 中调用 unit of work
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多