ハマったので残しときます。
手順3でフォームを作るときに、第2引数にエンティティオブジェクトを使ってしまった。
これで編集保存ができなかった。
リポジトリからgetしたものを使えば、編集できるし、
フォーム画面で編集前のデータが表示される
■手順
1.エンティティマネージャを取得する
2.リポジトリから編集したいデータ(レコードをgetする)
3.フォームを作る。この時、引数は、フォームクラス、リポジトリから編集したいデータ
4.フォームで編集した内容を入力しsubmitする
5.フォームとデータをバインドする
6.フォームからデータをgetする。
7.flushする (persistは使わない)
■コード
$request = $this->getRequest(); //リクエストをgetする
$map_en = new MapTable(); //編集では使わない。新規登録で使用
MapTableはエンティティ
MapTableTypeはフォームクラス
MapTableはエンティティ
MapTableTypeはフォームクラス
//手順1
$em = $this->getDoctrine()->getEntityManager();
//手順2
$product = $em->getRepository('NameChildDiaryBundle:MapTable')->find($id);
$product = $em->getRepository('NameChildDiaryBundle:MapTable')->find($id);
//フォームを作るときにgetしたデータを入手する
//手順3
//手順3
$form = $this->createForm(new MapTableType(), $product);
/*新規登録の時は下記
$form = $this->createForm(new MapTableType(), $map_en);
*/
if ($request->getMethod() == 'POST') {
//手順5
$form->bind($request);
//手順6
$form = $this->createForm(new MapTableType(), $map_en);
*/
if ($request->getMethod() == 'POST') {
//手順5
$form->bind($request);
//手順6
$product = $form->getData();
//手順7
//手順7
$em->flush();
}
}