2016-09-19 6 views
0

Ich habe eine Entität namens "Kandidat". Es ist nicht so besonders. Für sich genommen geht es gut: Ich kann aus einem Typ eine Form machen und sie bestehen lassen.Symfony2 Formularsammlung einer Entität

class CandidateType extends AbstractType 
{ 
public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('name', TextType::class, array('label' => 'Naam')) 
     ->add('openPosition', EntityType::class, array('class' => 'AppBundle:OpenPosition','choice_label' => 'subject','label' => 'Functie')) 
     ; 

} 

Allerdings mag ich eine Sammlung von dieser Form machen können, so dass die Nutzer in der Lage, neue Kandidaten mit Javascript über erstellen und immer und sie alle auf einmal speichern. Ich habe bereits an einer anderen Sammlung gearbeitet (Entität, die eine Eins-zu-viele-Beziehung zu einer anderen Entität hat, mit einem Prototyp und ein wenig netter Javascript) und das funktioniert gut, aber ich kann anscheinend keine Sammlung erstellen eine Entität (die tatsächlich ziemlich paradox klingt, vielleicht bin ich auf einem falschen Weg).

Irgendwelche Gedanken dazu?

+0

Hallo, warum nicht einen benutzerdefinierten Formulartyp mit einer Arraykollektion von Candidate erstellen und behandeln Sie einfach das Senden, wie Sie wollen (mit netten Javascript auf der Vorderseite, um die hinzufügen und entfernen usw.)? oder fehle ich etwas? –

Antwort

0

Aus der symfony-Dokumentation - Sie können eine Sammlung von Formularen mit jquery einbetten. Mit dem Daten-Prototyp und vielen Javascript/Jquery sollten Sie in der Lage sein, die Tricks zu machen.

Hier ist das Dokument, ich benutze es, um mehrere Adressen für einen Benutzer zu verwalten und es funktioniert gut!

http://symfony.com/doc/current/form/form_collections.html#allowing-new-tags-with-the-prototype

aber sicher, werden Sie eine benutzerdefinierte multipleCreateAction() erstellen müssen gefassten die mehrfache Erstellung von Kandidaten zu behandeln.

0

Ich habe es die Art und Weise gelöst Alvaro suggested: durch eine Arraycollection von Kandidaten zu schaffen:

$candidates['candidates'] = new ArrayCollection(); 

ich behandeln es dann wie jede andere Formcollection.

Verwandte Themen