2017-05-18 3 views
2

Im haben 2 Einheiten: Beitrag und Artikel. In meinem TestController habe ich eine Funktion mit dem Namen: addAction() wo ich versuche, diese 2 Entitäten und fügen Sie ihnen einige Daten, aber wenn ich versuche, dies zu tun, wenn ich meine App ausführen, werden die Formulare erfolgreich eingereicht , aber die 2 Tabellen (Beiträge und Artikel) sind leer. Warum ?Wie benutzt man 2 Formen in 1 Zweig in Symfony?

Hier ist meine addAction Funktion:

public function addAction(Request $request) 
    { 
     $post = new Post(); 
     $article = new Article(); 

     $postForm = $this->createForm(PostType::class, $post); 
     $articleForm = $this->createForm(ArticleType::class, $article); 

     $postForm->handleRequest($request); 
     $articleForm->handleRequest($request); 

     if ($postForm->isValid() && $articleForm->isValid()) { 
      $em = $this->getDoctrine()->getManager(); 

      $em->persist($post); 
      $em->persist($article); 

      $em->flush(); 
     } 
     return $this->render('add/add.html.twig', array(
      'postForm' => $postForm->createView(), 
      'articleForm' => $articleForm->createView() 
     )); 
    } 

Und der Zweig:

{% extends 'base.html.twig' %} 

{% block body %} 
    <div style="text-align: center;"> 
     <div class="container"> 
      <h1>Add Post</h1> 
      {{ form_start(postForm) }} 
       {{ form_widget(postForm) }} 
       <button class="btn btn-primary" type="submit">Add Post <span class="glyphicon glyphicon-plus"></span></button> 
      {{ form_end(postForm) }} 
     </div> 
    </div> 
    <hr> 
    <div style="text-align: center;"> 
     <div class="container"> 
      <h1>Add Article</h1> 
      {{ form_start(articleForm) }} 
      {{ form_widget(articleForm) }} 
      <button class="btn btn-primary" type="submit">Add Article <span class="glyphicon glyphicon-plus"></span></button> 
      {{ form_end(articleForm) }} 
     </div> 
    </div> 
{% endblock %} 
+1

Das erste Problem, das ich sehe, ist, dass das Absenden eines Formulars auf einer Seite, die 2 Formulare enthält, das Senden der Daten nur für das übergebene Formular - nicht für beide. – adelineu

+0

Wie kann das Problem gelöst werden? –

+0

Versuchen Sie zu sehen, ob Sie für beide Entitäten ein Formular erstellen können. Ich kenne das Ergebnis von handleRequest() nicht wirklich, wenn Sie zwei davon in einem Formular verwenden möchten (wenn es weiß, wie die Felder den Entitäten zugewiesen werden). – adelineu

Antwort

4

Sie nicht zwei gleichzeitig Formulare einreichen können. Also, senden Sie sie stattdessen nacheinander

Verwandte Themen