Symfony2、Doctrine、および FOSRestBundle を使用して API を構築しています。フォーム コンポーネントを使用して、レコードを作成または変更する API 要求を検証したいのですが、いくつか問題があります。検証コンポーネントを単独で使用してきましたが、すべての検証ロジックをコントローラーから移動し、要求データをエンティティにバインドし、エラー メッセージをより適切に集約するため、フォーム コンポーネントの使用に移行したいと考えています。
私が抱えている問題は、レコードが POST によって作成されているとき、または PUT によって更新されているときに、必須ではないフィールドに関係しています。理想的には、必須ではないフィールドを HTTP 経由で送信する必要がまったくないようにしたいのですが、これによりフォームの検証が失敗します。たとえば、私が使用しているエンティティのフィールドの 1 つは、endTime という DateTime フィールドであり、これは必須ではありません。endTime というパラメータが POST または PUT リクエストに存在しない場合、Symfony2 は Request からの値 null をフィールドにバインドします。これが DateTime インスタンスに変換されると、現在の日時にキャストされますが、これはまったく必要ありません。
HTTP リクエストに値が存在しない場合、値をエンティティにバインドしないように Symfony に指示する方法はありますか? エンティティ クラスの注釈に基づいて検証が失敗するため、これはまだ安全です。bind メソッドをオーバーライドすることもできますが、これは大変な作業のようです...
アイデアをありがとう。