2016-10-31 6 views
0

symfonyの2つのエンティティ(「イベント」と「情報」)を含むフォームを更新する際に問題があります。 。彼らはそれがすべての新しいデータベースのエントリとして保存されますか。symfony 3.1:フォームを編集すると、更新する代わりに新しいデータベースエントリが作成されます

public function editAction(Request $request, Event $event) 
{ 
    $user = $this->getUser(); 

    $editForm = $this->createFormBuilder() 
     ->setMethod('PUT');  

    $editForm->add("event", 'AppBundle\Form\EventType'); 
    $editForm->add("info", 'AppBundle\Form\InfoType'); 

    $editForm = $editForm->getForm(); 
    $editForm->handleRequest($request); 

    if ($editForm->isSubmitted() && $editForm->isValid()) { 
     $em = $this->getDoctrine()->getManager(); 
     $formEvent = $editForm->get('event')->getData(); 

     echo "Debug<br />"; 
     echo "form id: ". $formEvent->getId(); // Wrong. Returns null. 
     echo "<br /> event id: ". $event->getId(); // The correct id of entity that should be updated. 

     $em->merge($formEvent); 
     $em->flush();  
    } else { 
     $editForm->get('event')->setData($event); 
    } 

    return $this->render('event/edit.html.twig', array(
     'event' => $event, 
     'edit_form' => $editForm->createView() 
    )); 

は、私はいくつかのデバッグ情報をエコー、およびのhandleRequest()$ editForm-で見つかったイベント・エンティティに新しい情報をマッピングやる>(「イベント」を取得)私はそれが更新するのではなく、新しいエンティティの作成と関係があると想定しているIdが欠けていることを除いては、何が起きているのですか?

ルーティング: event_edit: path: /{id}/edit defaults: { _controller: "AppBundle:Event:edit" } methods: [GET, POST, PUT]

小枝:

{{ form_start(edit_form, {'attr': {'novalidate': 'novalidate'}}) }} 
    {{ form_errors(edit_form) }} 
    {{ form_widget(edit_form.event.title) }} 
    {{ form_widget(edit_form.info) }} 
    <input type="submit" value="Save" /> 
{{ form_end(edit_form) }} 
+0

私たちにルーティング設定とテンプレートを見せてください - コントローラが入力データを受け取る方法を知る必要があります)。 –

+0

こんにちはミハイ!私は投稿を編集しました。 – user2017748

答えて

1

イベントエンティティは、あなたが更新し、それが教義によって管理したいエンティティである場合(ロードされた)、あなたはあなたのフォームにイベントエンティティを渡す必要があります。これを試してください:

+0

動作していないようです。 $ eventは、譲渡の時点で、元のデータのみを含み、要求に投稿された新しいデータは含みません。 – user2017748

関連する問題