リクエストの場合PATCH、Symfony 2.3 (おそらくそれ以前?) は、部分的なモデルの更新をネイティブにサポートしています。以下の説明を参照してください。
非PATCHリクエスト (例:PUTおよびPOST) の場合、イベント サブスクライバーを作成して登録し、未送信のデータを元の値に操作するか、カスタム リクエスト ハンドラーを記述して、常にに設定して$form->submit()メソッドを呼び出すことにより、部分的なデータ バインディングを実行できます。 .$clearMissingfalse
PATCHリクエストによる部分バインディングの処理
Symfony の内部をもう少し掘り下げ、イベント サブスクライバーとフォーム拡張機能について理解を深めた後、私はHttpFoundationRequestHandlerクラスに出くわしました。基本的に、Symfony 2.3 では、$form->submit($request)開発者はフォームの送信されたデータをバインドするときに を呼び出す代わりに$form->handleRequest($request);を呼び出す必要があります。これにより、アタッチされたリクエスト ハンドラーが呼び出されます (デフォルトではHttpFoundationRequestHandler)。リクエスト ハンドラはいくつかのことを行いますが、最も重要なのは$form->submit(). リクエストメソッドが、提供されていないフォームデータを値としてバインドしないようにフォームに指示していた場合false、フォームのメソッドに値を渡します。submitPATCHnull
Symfony 2.3 でメソッドを使用する際の注意事項がいくつかあります。これPATCHについては、Symfony のドキュメントでさらに説明されています。
Routes で GET および POST 以外の HTTP メソッドを使用する方法:
  「残念ながら、ほとんどのブラウザーは PUT および DELETE リクエストの送信をサポートしていないため、人生はそれほど単純ではありません。幸い、Symfony2 は、この制限を回避する簡単な方法を提供します。クエリ文字列に _method パラメーターを含めるか、 HTTP リクエスト、Symfony2 はルートを照合するときにこれをメソッドとして使用します。」
PUT上記の Symfony のドキュメントからの引用は、ほとんどのブラウザが、PATCH、またはDELETEリクエストの送信をサポートしていないことを説明しています。Symfony の部分的なフォーム更新のネイティブ サポートを活用するには、PATCHリクエストを使用する必要があるため、これは問題です。しかし、Symfony はこれに対する答えを提供します。ドキュメントには、_methodパラメーターまたはフォームの値を使用して、必要な実際のリクエストを偽装できることが示されています。Symfony は、私たちが何を意味するかを正確に認識します。ただし_method、理解するには、http_method_override構成オプションを有効にする必要がある場合があります。たとえば、次のようになります。
# config.yml
framework:
    http_method_override: true
    ...
フォームがどのメソッドを使用するべきかを Symfony に伝える他の方法もあり、それらはここにあります:フォームのアクションとメソッドの変更。