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) }}
私たちにルーティング設定とテンプレートを見せてください - コントローラが入力データを受け取る方法を知る必要があります)。 –
こんにちはミハイ!私は投稿を編集しました。 – user2017748