2016-07-14 8 views
0

In Symfony muss ich ein Formular mit Textfeldern erstellen, die Daten aus der Datenbank zur Bearbeitung gezogen halten würde. Im Moment habe ich diesen Code, wo ich eine Frage bin immer mit ihm vier Antworten ist:Symfony Build Form Textfelder mit Daten aus Array

$question = $this->getDoctrine()->getRepository('QuizBundle:Question')->findOneByIdJoinedToCategory($id); 
$data = $question->getAnswers(); 

Dies retrives die Frage und die Antworten, die in einer Array-Sammlung gespeichert werden. Im Moment kann ich das Formular mit den Fragedaten erstellen, aber wie kann ich die Antworten aus der Array Collection verwenden, um Textfelder mit den Daten zu erstellen? Ich kann auch die Array-Sammlung in ein reguläres Array konvertieren, wenn ja, wie man Textfelder mit Daten aus einem regulären Array erstellen? Dank

Form Builder:

$form = $this->createFormBuilder($question) 
      ->add('Image', TextType::class) 
      ->add('Question', TextType::class) 
      ->add('answers', TextType::class, 
        array('data' => array())) 
      ->add('Submit',SubmitType::class, array('label' => 'Edit Record')) 
     ->getForm(); 

enter image description here

+0

Haben Sie [EntityType] (http://symfony.com/doc/current/reference/forms/types/entity.html) überprüft? – Glasset

+0

@Glasset Versuchte es jetzt. Mit dem Entitätstyp bekomme ich alle Antworten aus der Tabelle. Ich brauche nur die Antworten für die spezifische Frage. Mit dem geposteten Code bekomme ich die Frage und die Antworten in der Array-Sammlung (meine Entitäten sind verwandt mit OneToMany), aber ich weiß nicht, wie man Textfelder mit dem Antwortwert beim Erstellen des Formulars hat. – Otonel

+0

Sie müssen durch die '$ Optionen' das Array vom Controller übergeben ... das ist eine Möglichkeit, aber es gibt eine andere Möglichkeit, es zu tun, aber ich erinnere mich nicht jetzt –

Antwort

1

Bitte nehmen Sie sich einen Blick auf diese Seite von Symfony Dokumentation http://symfony.com/doc/current/reference/forms/types/collection.html
Collection Feld ist, was Sie suchen.

+1

So etwas wie das: '-> hinzufügen ('Antworten', CollectionType :: Klasse, Array ( 'Eintrags-Typ' => TextType :: Klasse, 'Entry-Optionen' => Array ( ' attr '=> array (' class '=>' email-box ') ), )) ' – Otonel

+0

froh, dass es hilft :) Alles Gute! –

+0

Ich kann es nicht funktionieren, wie Sie sehen können Ich bin ziemlich neu in Symfony und diese Form Gebäude gibt mir Kopfschmerzen. Muss ich aus meinem Beitrag, um das Textfeld aus der Sammlung zu erstellen, $ question oder $ data übergeben? Und wo gebe ich es in der add-Anweisung weiter? – Otonel

Verwandte Themen