2012-03-23 9 views
3

エンティティの編集フォームが作成フォームとは少し異なる場合があります。私はそれらを編集可能にしたくないので、いくつかのフィールドを表示しません。フォームの更新プロセスからエンティティフィールドを除外します。symfony2

しかし、このフォームを保存すると、含まれていないフィールドはすべてnullに設定されて保存されますが、これらのフィールドは更新プロセス全体から除外します。

どうすればこの問題を解決できますか?

答えて

5

いくつかのオプションがあります:

  • は編集のための基本的なフォームタイプを作成し、作成するためのフィールドを追加するためにそれを拡張します。
  • フォームタイプは1つだけにしますが、条件付きでいくつかのフィールドを追加します。つまり、エンティティが新しい場合のみです。エンティティを$options['data']というフォームタイプで取得し、IDがnullかどうかを確認することができます。
  • form eventsを使用してください。
+0

は少し奇妙な最初のアプローチではないですか?編集フォームは作成フォームを拡張してはいけませんか?だから、基本的には、拡張クラスのフィールドをオフにして、フォームを「null」にしないでデータを設定できますか? – k0pernikus

+0

別の方法で尋ねる:異なるオプションの上下に名前を付けることができますか?どちらをお勧めしますか? – k0pernikus

0

別のオプションは、代わりのhandleRequestのフォームを提出し、falseに2番目のパラメータ$のclearMissingを渡すことです:

$editForm->submit($request->request->get('form_name'), false); 
関連する問題