我如何根据Symfony2中表单本身的某些字段仅验证一些验证组

时间:2012-05-21 18:35:31

标签: validation symfony

我在一些验证组中组织了一个大表单。对于表单中的每个组,都有一个相应的复选框,告诉服务器保存组数据。

当用户发布表单时,我需要仅验证与已选中复选框相对应的验证组,因为它们的某些“子”字段是必需的,但仅当您激活该组时才需要。否则验证器必须忽略必填字段。

其实我在控制器中这样做。我跳过Symfony的正常验证周期并手动验证每个字段检查组激活复选框。

如何在Form类或实体使用的特定Constraint类中移动此验证逻辑?


编辑:

如下所述,symfony 2.1中可能存在,现在我解决了:

$request = $this->get('request');

// myEntity knows the business logic to chose validation groups
$myEntity->collectValidationGroups($request);

$form = $this->createForm(new MyEntityType(), $myEntity);

2 个答案:

答案 0 :(得分:2)

如果您使用的是Symfony 2.1,则可以根据提交的数据设置验证组。查看this部分。

答案 1 :(得分:0)

还有另一种可能性,而不是2.1提供的那种可能性。 您可以使用validation_groups

在表单上设置$builder->getData()属性
// inside buildForm method of a form type:
$builder->setAttribute('validation_groups', $builder->getData()->getValidationGroups());