Twig: Dynamische Blocknamen

Erstellt am 12. Apr. 2011  ·  7Kommentare  ·  Quelle: twigphp/Twig

Die Verwendung von vars für Blocknamen funktioniert nicht.

{% set block_name = "my_block_name" %}

{% block block_name %}
etwas html...
{% Endblock %}

Hilfreichster Kommentar

Blocknamen sind Teil der Struktur der Vorlage und müssen daher zur Kompilierzeit bekannt sein.
Variablen sind nur zur Laufzeit bekannt.

Alle 7 Kommentare

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

mmarton picture mmarton  ·  4Kommentare

xxfaxy picture xxfaxy  ·  6Kommentare

dvladimirov77 picture dvladimirov77  ·  5Kommentare

ericmorand picture ericmorand  ·  4Kommentare

mnapoli picture mnapoli  ·  5Kommentare