Wie kann ich Parameter an einen Symfony2 Twig-Block übergeben?
Lesezeit: 3 Minuten
Adil
Ich möchte Tabellenüberschriften in einem Zweigblock generieren und sie auf der Seite wiederverwenden. Diese Seite enthält ungefähr 5 verschiedene Tabellen mit ungefähr denselben Überschriften. Der Blockcode ist so:
Ich möchte den statementType als Parameter übergeben, wo ich den Block rendere, wie folgt:
{% render block.table_headers with {'statementType': 'INC'} %}
Aber das funktioniert nicht. Ich möchte den Block und sein Rendering in derselben Datei (aber in verschiedenen Blöcken) behalten, um die konzeptionelle Nähe zu gewährleisten.
Ist es überhaupt möglich, solche Blöcke zu verwenden? Ich habe mir die Symfony2-Dokumentation angesehen und konnte nichts finden, was darauf hindeutet, dass dies möglich wäre, aber es scheint mir eine so offensichtliche Verwendung von Blöcken zu sein.
David DIVERRES
Jetzt mit Symfony v2+ (3, 4 & 5, seit Twig v1.28.0) können wir eine benutzerdefinierte Vorlage auf der verwenden block() Funktion mit der with Stichwort:
Das funktioniert gut für mich, zumal with überschreibt keine Variablen außerhalb ihres Gültigkeitsbereichs.
– Pierre de LESPINAY
3. April 2018 um 14:59 Uhr
Es gibt ein Update für das include-Tag in Symfony 2.2, das Ihnen dabei helfen könnte. Hier ist ein Beispiel für das neue Tag: {{ include('FTWGuildBundle:Help:popover.html.twig', {'content':helpContent,'title':helpTitle}) }}
Dies kann das sein, was Sie brauchen, da es vermeidet, eine Unteranfrage an einen Controller zu stellen (render tut dies) wird es eine bessere Leistung erbringen.
In meinem Beispiel füge ich den HTML-Code für ein Hilfe-Popover ein und stelle Titel und Inhalt bereit.
Ich wünschte, diese Funktion wäre da gewesen, als ich die Frage 2011 zum ersten Mal gepostet habe. +1
– Adil
13. April 2013 um 15:00 Uhr
Danke – das war genau das, wonach ich gesucht habe und bedeutete, dass ich keine Routen in der routing.yml hinzufügen musste.
– irgendein Benutzer
15. April 2013 um 17:15 Uhr
In späteren Versionen von Twig veraltet, verwenden Sie die Alternative, die das ‘with’ anstelle eines Kommas zwischen den Parametern und der Route verwendet.
– xarlymg89
21. Februar 2020 um 11:01 Uhr
Alex
{% render block.table_headers with {'statementType': 'INC'} %} wird von Symfony nicht erkannt. Sie müssen verwenden:
Für das, was es Ihnen wert ist. Hier ist ein Beispiel dafür, wie ich Inhaltsblöcke gerendert habe. Dies ist für eine Batch-App, die E-Mails sendet, also etwas anders als das, was Sie versuchen, aber nichtsdestotrotz hilfreich sein kann