Symfony2/Twig - Iteration über die Optionen wählen
Üblichen Art der Darstellung select
Feld zu rufen
{{ form_row(form.doctor_service_id, {'attr':{'class':'form-control'}}) }}
Ich würde gerne zwei Dinge:
- Prüfen, ob dieses Feld ist eigentlich ein select-Feld
- Iteration über jede option (Wert, name). Ich weiß, wie
twig
iterator funktioniert, ich weiß nur nicht, wie Sie Zugang zuselect
Optionen und warf Sie zu.
InformationsquelleAutor ex3v | 2015-06-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
InformationsquelleAutor Jasmin Mistry
Können Sie einen Zweig Erweiterung fügen Sie einen Zweig mit 'instanceof' operator. Wenn Sie nicht vertraut mit dem erstellen von twig-extensions finden Sie unter Wie Schreibt man einen Custom-Twig-Erweiterung in der Symfony-docs. Es ist eine Zusammenfassung, die zeigt ein Beispiel eines Twig-Erweiterung, die eine instanceof-operator. Dann zu überprüfen, ob ein Feld ist ein select-Feld verwenden:
Dies ist nicht so einfach, wie Sie vielleicht denken, weil die Auswahl-Felder haben so viele Optionen. Mit Symfony-es ist die form Thema, das bestimmt, wie die verschiedenen Feldtypen werden in html übersetzt. Das Standard-form-Thema form_div_layout.html-Code.Zweig. Es dauert etwa 50 Zeilen code zum Rendern einer Auswahl-Feld unter Berücksichtigung aller Optionen, abgedeckt durch die Blöcke
choice_widget, choice_widget_expanded, choice_widget_collapsed and choice_widget_options
. Sie könnten wählen Sie die bits, die Sie benötigen, basierend auf den Optionen, die Sie eingestellt haben, für die Wahl Feld, und fügen Sie Sie in Ihre twig template aber dann die Einstellung der Wahl-Optionen in der form-Klasse hätten keine Auswirkungen. Der richtige Weg, um benutzerdefinierte machen Ihre Wahl Optionen (*vorausgesetzt, die Option ist nicht ausgebaut) ist das überschreiben derchoice_widget_options
- block aus dem form-theme. Form-Anpassung ist ein Thema für sich, aber der einfachste Ansatz ist das überschreiben der block als one-off innerhalb Ihrer twig template und ändern Sie ihn, um Ihre Bedürfnisse zu erfüllen, z.B.Wenn Sie nicht brauchen, um die Anpassung des rendering Ihrer Wahl Feld, sondern wollen einfach nur, um die Daten zu erhalten, um etwas anderes zu tun mit ihm, dann ist die beste Sache zu tun ist, übergeben Sie die Daten (zugeordnet ist das Auswahl Feld), um das twig template zusammen mit dem Formular und verwenden Sie es direkt. Wenn das keine option ist es möglich, die Iteration über die Entscheidungen, die in der form Thema, obwohl Sie möglicherweise benötigen, zu berücksichtigen bevorzugte Wahl. Der einfachste Fall wäre z.B.
InformationsquelleAutor redbirdo