4

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

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

实际上我在我的控制器中这样做。我跳过 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);
4

2 回答 2

2

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

于 2012-05-21T20:23:48.847 回答
0

除了 2.1 提供的可能性之外,还有另一种可能性。您可以使用以下validation_groups方式在表单上设置属性$builder->getData()

// inside buildForm method of a form type:
$builder->setAttribute('validation_groups', $builder->getData()->getValidationGroups());
于 2012-05-21T21:00:19.017 回答