심포니에서 두 개의 항목 ("이벤트"및 "정보")을 포함하는 양식을 업데이트하는 데 문제가 있습니다. 사용자가 정보를 업데이트하려고 시도 할 때까지 모든 것이 올바르게 작동합니다 . 그들이 할 때 모든 새 데이터베이스 항목으로 저장합니다.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()
));
을 $ editForm->의 get ('이벤트'에서 발견 좀 디버그 정보를 에코하고, handleRequest()는 이벤트 개체에 새 정보를지도 할) 이드의 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