Ich arbeite an einem Formular, das zum Senden von Benachrichtigungen verwendet wird. In der Form habe ich unter anderem ein Eingabedateifeld. In diesem Feld lade ich eine CSV-Datei. Aus der CSV-Datei (enthält eine Spalte mit E-Mails) entziehe ich die Daten mit https://code.google.com/p/jquery-csv/ und füge sie zu einem ausgewählten schreibgeschützten Mehrfachfeld mit allen ausgewählten Optionen hinzu.Symfony2 Forms - So verwenden Sie dynamische Auswahloptionen
Hinweis: Ich habe das Formular mithilfe von Formulartypen erstellt (durch das Symfony2 Buch) - class NotificationType extends AbstractType
; Das Formular wird über AJAX eingereicht.
1. Streik ein zu berücksichtigen, dass das Auswahlfeld dynamisch bevölkert wird, habe ich nicht beschlossen, es zu den Formular-Builder hinzufügen, aber es mit Hilfe von JavaScript zu injizieren.
Es war ein schlechter Zug, weil Symfony2 beim Übermitteln des Formulars bestätigt, dass die Felder, die im Formular-Generator hinzugefügt wurden, genau die sind, die übergeben werden. Der zurückgegebene Fehler lautet: Dieses Formular sollte keine zusätzlichen Felder enthalten.
2. Streik zwei Geht man von Streik, den ich wollte sehen, ob ich das umgehen kann, so habe ich das Auswahlfeld im Formular-Builder, aber ohne Optionen, auch die Optionen über JavaScript zu injizieren.
Immer noch kein Glück. Symfony2 stellt außerdem sicher, dass Sie keine Option übergeben können, die beim Hinzufügen des Felds nicht zum Formular-Generator hinzugefügt wurde. Der zurückgegebene Fehler lautet: Dieser Wert ist nicht gültig.
3. Streik drei Von Schlag 1 und 2, vermute ich, dass der einzige Weg, um diese Arbeit zu machen wäre, alle möglichen Optionen in Form Builder in dem Auswahl-Array hinzuzufügen, wenn das Feld hinzufügen . Auf diese Weise würden das Feld und die Optionen für das Senden gültig sein.
Aber das ist nicht etwas, das ich als eine praktikable Option betrachten würde, vor allem weil ich im Auswahlfeld 10000 mögliche Ergebnisse erwarte, die mir nicht bekannt sind, bis ich die CSV-Datei lade.
Können Sie einen anderen Ansatz für diesen vorschlagen?
Danke!
Die Verwendung von [this] (http://symfony.com/doc/current/cookbook/form/dynamic_form_modification.html#cookbook-form-events-submitted-data) Dokumentation wäre die beste Option. Aber Sie sind fast mit Ihrer 3. Implementierung da. Anstatt alle möglichen Optionen hinzuzufügen, können Sie der Option im Auswahlfeld nicht nur einen ausgewählten Wert hinzufügen. – xiidea