Die Verwendung von vars für Blocknamen funktioniert nicht.
{% set block_name = "my_block_name" %}
{% block block_name %}
etwas html...
{% Endblock %}
weil block_name
als String dargestellt wird 'block_name'
Entschuldigung, Sie sagen, dass Sie keine dynamischen Blöcke mit twig haben können oder dass ich es falsch verwende?
Sie haben Recht, keine dynamischen Blocknamen
Sie können keine dynamischen Blöcke verwenden. Veröffentlichen Sie Ihren Anwendungsfall auf der Twig-Benutzer-Mailingliste.
Entschuldigung für das Öffnen eines Kühlkoffers ^^. Ich glaube, ich bin auf einen Anwendungsfall gestoßen, der von den dynamischen Blocknamen profitieren würde ...
Ich verwende Doctrine mit Einzeltabellenvererbung (abstrakte Basisklasse = Artikel und Nachrichten + FAQ erweitert Artikel).
Dann habe ich Formularklassen erstellt, um News und Faq erstellen zu können. Aber alle Formulare verwenden dieselbe Zweigvorlage. Dann musste ich eine Feldvorlage (z. B. Artikel.Produkt) wie hier beschrieben anpassen.
Das Problem ist, dass sich der Name des Feldes ändert, je nachdem, welches Formular verwendet wird. Der Name lautet entweder news_product oder faq_product, daher wäre es praktisch, meine Formularfelder wie folgt anpassen zu können, um Wiederholungen zu vermeiden:
{%- block '_'~type~'_product_widget' -%}
...
{% endblock %}
Nach einigen Recherchen habe ich dies gelöst, indem ich das Präfix des Formulars in den verschiedenen Formulartypklassen mit getBlockPrefix erzwungen habe, sodass alle Formulare die gleichen Feldnamen haben und ich einfach article_product anpassen kann:
public function getBlockPrefix(){
return 'article';
}
Ich wollte nur diesen Anwendungsfall dokumentieren, der jemandem helfen könnte ...
Blocknamen sind Teil der Struktur der Vorlage und müssen daher zur Kompilierzeit bekannt sein.
Variablen sind nur zur Laufzeit bekannt.
Hilfreichster Kommentar
Blocknamen sind Teil der Struktur der Vorlage und müssen daher zur Kompilierzeit bekannt sein.
Variablen sind nur zur Laufzeit bekannt.