Symfony2 - FormBuilder - fügt dem Feld und der Eingabe eine Klasse hinzu
Möchte ich hinzufügen, dass eine Klasse auf bestimmte Eingangs-oder label-Felder innerhalb symfony2.
Kann ich etwas tun, wie dieses in mein Formular innerhalb Zweig:
<div class="row">
{{ form_label(form.subject) }}
{{ form_widget(form.subject, { 'attr': {'class': 'c4'} }) }}
</div>
Welche gut funktioniert. Ich habe aber im setup die Vorlage für jede form. Und ich habe, um es zu brechen, um die kleinste mögliche Ausgangspegel. Eigentlich möchte ich verwenden:
{{ form_widget(form) }}
So, ich dachte, wie könnte ich das hinzufügen einer css-Klasse für das l irgendwo in:
class SystemNotificationType extends AbstractType {
public function buildForm(FormBuilder $builder, array $options) {
$builder ->add('subject', 'text', array( 'label' => 'Subject' ) )
–
Dachte ich, es wäre nützlicher, da ich nur änderungen auf einer Stelle.
So, wie konnte das getan werden, oder vielleicht habe ich ' m denken der falsche Weg.
Jede Hilfe wäre toll,
Vielen Dank,
Philipp
InformationsquelleAutor der Frage insertusernamehere | 2012-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Klasse ein Feld ist Teil der Präsentationsschicht der Anwendung, so ist es am besten zu einem Zweig Thema für Ihre Formulare:
Erstellen Sie eine Datei
fields.html.twig
imResources/views/Form
Ihrer Bündeln und zu definieren, wie Sie Ihr Formular Zeile wird formatiert, zum Beispiel:Wenn Sie anpassen möchten nur bestimmten Bereich, zum Beispiel im Bereich
fieldName
von der formformName
haben, passen Sie die Zeile:BEARBEITEN: passen Sie nur das Feld:
Dann in aller Formular-Vorlagen, die Sie wollen, dass es mit diesem Thema hinzufügen:
Dies erklärt sich in der Tiefe in das Kochbuch
InformationsquelleAutor der Antwort Visavì
Kannst du es so machen:
InformationsquelleAutor der Antwort Pappa
Form Theming
Jedes Teil wie ein Formular wiedergegeben wird, kann angepasst werden. Sie sind frei, zu ändern, wie jede form von "Zeile" dargestellt wird, ändern Sie den markup-Code verwendet, um render-Fehler oder sogar anpassen, wie ein textarea-tag dargestellt werden soll. Nichts ist Tabu, und verschiedene Anpassungen können an verschiedenen Orten verwendet werden.
Symfony verwendet Vorlagen zum Rendern jeder und jede Teil eines Formulars, wie label-tags, input-tags, Fehlermeldungen und alles andere.
In Zweig, jede form "fragment" ist vertreten durch ein Ast-block. Anpassen jeden Teil, wie man ein Formular macht, die Sie gerade brauchen, um das überschreiben der entsprechenden block.
In PHP, ist jede form "fragment" dargestellt wird, die über eine einzelne Vorlage-Datei. Anpassen jeden Teil, wie man ein Formular macht, die Sie gerade brauchen, um das überschreiben der bestehenden Vorlage eine neue erstellen.
Verstehen, wie das funktioniert, passen Sie die form_row-fragment und fügen Sie ein class-Attribut der div-element, das Sie umgibt, jede Zeile. Um dies zu tun, erstellen Sie eine neue Vorlage-Datei, wird das speichern neuer markup:
Den form_row form-fragment verwendet wird, die beim Rendern die meisten Felder über die form_row Funktion. Zu sagen, die form-Komponente, mit der neuen form_row fragment oben definiert, fügen Sie die folgenden am Anfang der Vorlage, das macht die form:
Den form_theme tag (im Zweig) "importiert" werden die Fragmente definiert, die in die gegebene Vorlage ein und verwendet Sie beim Rendern des Formular. In anderen Worten, wenn die form_row-Funktion aufgerufen wird, später in diese Vorlage zu verwenden, wird die form_row block von benutzerdefinierten Designs (anstelle der Standard-form_row block, die Schiffe mit Symfony).
Ihre custom theme nicht überschreiben aller Blöcke. Beim Rendern von einem block nicht überschrieben, in der Ihr benutzerdefiniertes Design, das theming-engine zurückgreifen, um die globalen Thema (definiert in der bundle-Ebene).
Wenn mehrere benutzerdefinierte Designs sind, sofern Sie gesucht wird in der aufgeführten Reihenfolge, bevor er zurück zu dem globalen Thema.
Anpassen eines Teils einer form, die Sie gerade brauchen, um das überschreiben der entsprechenden fragment. Genau zu wissen, welcher block bzw. die Datei zu überschreiben, ist Gegenstand des nächsten Abschnitts.
Weitere Informationen finden Sie in der anpassen rendering in Symfony cookbook
Globalen Form Theming
Im obigen Beispiel, verwendet Sie die form_theme Helfer (im Zweig) zu "importieren", um das benutzerdefinierte Formular-Fragmente in genau dieser form. Man kann auch sagen, Symfony importieren form-Anpassungen in Ihrem gesamten Projekt.
Zweig
Automatisch enthalten die angepasste Blöcke von den Feldern.html-Code.twig template erstellt früher in allen Vorlagen ändern Sie Ihre Anwendung-Konfigurations-Datei:
Alle Blöcke innerhalb der Felder.html-Code.twig template sind jetzt weltweit verwendet, um zu definieren, Formular-Ausgabe.
InformationsquelleAutor der Antwort mukulu