2017-07-15 8 views
0

Ich möchte meine Daten mit symfony Formular bearbeiten und ich habe ein Problem wahrscheinlich mit meinem Controller. Ich habe einige wie folgt aus:Symfony bearbeiten Formular funktioniert nicht

public function detailAction($id,Request $request) 
{ 
    $order = $this->getDoctrine()->getRepository(OrderMain::class)->find($id); 

    if (!$order) { 
     throw $this->notFoundException(); 
    } 

    $form = $this->createForm(OrderMainType::class, $order); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
//   do not enter here 
      $orderEdit = $form-getData(); 
      $em = $this->getDoctrine()->getManager(); 
      $em->persist($orderEdit); 
      $em->flush(); 
     } 

    return $this->render('ModiModiAdminBundle:Order:detail.html.twig',array(
     'form' => $form->createView(), 
     )); 
} 


public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
    /.../ 
->add('edit', SubmitType::class, array(
            'attr' =>array('class'=>'edit'), 
      )); 
    } 

Alle zeigen corectly, aber wenn ich auf eine Schaltfläche klicken meine Seite neu laden (dosen't Änderungen speichern). Danke für die Hilfe.

+0

Der Entity Manager weiß nicht, wie die Formulardaten persistieren, es nimmt nur Entitäten. Übergeben Sie die Entität "$ order" in Ihrem Controller, die innerhalb des isvalid-Bedingungsblocks mit den neuen und gültigen Formulardaten aktualisiert werden soll. – JimL

+0

Es ist does't Arbeit :( – MrMajk

Antwort

0

Es ist ein Problem mit Ihrer Controller-Methode. Unten sollte für Sie arbeiten.

public function detailAction($id,Request $request) 
{ 
    $order = $this->getDoctrine()->getRepository(OrderMain::class)->find($id); 

    if (!$order) { 
     throw $this->notFoundException(); 
    } 

    $form = $this->createForm(OrderMainType::class, $order); 
    $form->handleRequest($request); 

    if ($form->isSubmitted() && $form->isValid()) { 
      //do not enter here 
      $em = $this->getDoctrine()->getManager(); 
      $em->flush(); 
     } 

    return $this->render('ModiModiAdminBundle:Order:detail.html.twig',array(
     'form' => $form->createView(), 
     )); 
} 

Sie können die Zeile $orderEdit = $form-getData(); entfernen. Wenn Ihr Formular übermittelt wird, sollte die Entität anhand der übermittelten Daten aktualisiert werden. Da dies bereits eine verwaltete Entität ist, können Sie auch entfernen $em->persist($orderEdit);

+0

Vielleicht ist es Arbeit, aber nicht nach innen geben, wenn ($ form-> isSubmitted() && $ form-> isValid()) – MrMajk

+0

Was meinst du mit "nicht eingeben" nach Formular ist eingereicht und gültig? –

+0

ja, $ form-> isSubmitted() und $ form-> isValid() gibt immer false zurück – MrMajk

Verwandte Themen