2

1 対 1 の関係でバインドされた 2 つのエンティティ (A と B と呼びましょう) と、それらを入力するフォームがあります。B エンティティ フィールドは、エンティティ A の状態に応じて次のように入力されます。

エンティティ A: 状態 0 エンティティ B: 両方のフィールドが空

エンティティ A: 状態 1 エンティティ B: フィールド 1 が埋められている フィールド 2 が空である

エンティティ A: 状態 2 エンティティ B: フィールド 1 が空 フィールド 2 が満たされている

両方のフィールドが満たされた状態は許可されていません。

そのため、状態 1、2、および許可されていないことを確認するために、3 つのカスタム コールバック バリデータを作成しました。残念ながら、両方のフィールドが空の場合、状態 1 と 2 のチェックはトリガーされません。これは明らかにフィールドが空であるためです。実際、偽の非表示フィールドをフォームに追加すると、フォームにデータが入力されるため、検証プロセスがトリガーされます。

明らかにこれはハックなソリューションなので、すべてのフォーム フィールドが空の場合でもサブフォームの検証を強制する方法があるかどうか疑問に思っていました。

4

1 に答える 1

0

symfony はフォームを検証するのではなく、エンティティを検証します。最善の方法は、エンティティに検証関数を作成し、ここで説明されている symfony の「Getters」検証を使用して検証することです。

http://symfony.com/doc/2.1/book/validation.html#getters

あなたの場合、検証を持つエンティティはフォームタイプに関連付けられているエンティティだと思います。

于 2013-03-21T20:20:04.047 に答える