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 のチェックはトリガーされません。これは明らかにフィールドが空であるためです。実際、偽の非表示フィールドをフォームに追加すると、フォームにデータが入力されるため、検証プロセスがトリガーされます。
明らかにこれはハックなソリューションなので、すべてのフォーム フィールドが空の場合でもサブフォームの検証を強制する方法があるかどうか疑問に思っていました。