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 に答える