Dieser Artikel ist bereits über 2 Jahre alt. Das gezeigte Vorgehen ist vielleicht nicht mehr aktuell.
Copyright bei Patrick Froch und easy Solutions IT. Dieses Werk ist lizenziert unter Creative Commons BY-NC-SA.

Twig
Ich werde hier nicht auf die allgemeinen Vorteile einer Templateengine eingehen. Es gibt durch aus unterschiedliche Meinungen zu den Vor- und Nachteilen von Templateengines. Ich finde sie nützlich, da sie meiner Meinung nach die Templates übersichtlicher machen. Bei Twig gibt es drie Typen von Auszeichnungen:{{ ... }}
Gibt etwas aus{% ... %}
Tut etwas{# this is a comment #}
Ist ein Kommentar
Basis
Als Basis der Betrachtung von Twig soll folgenden Template diehnen: In Zeile 6 wird ein Block mit einem Standardwert definiert, in diesem Fall der Seitentitel. Er kann später in anderen Templates überschrieben werden, ich werden weiter unten noch darauf eingehen. In Zeile 19 wird ein leerer Block definiert (body
), der von anderen Templates mit dem eigentlichen Inhalt der Seite
gefüllt wird.
Erweitern eines Tamplates
Will man nun in einem weiteren Template den Bockbody
füllen, wird einfach das
Basis-Template erweitert. Dies könnte z.B. so aussehen:
In Zeile 2 wird das zu erweiternden Template angegeben. In Zeile 4 wird der Titel aus dem Basis-Template
überschrieben. Der Block body
wird ab Zeile 7 mit einer
for
-Schleife mit Inhalt gefüllt. Da das Basis-Template unter
app/Resources/views directory/
gespeichert ist, kann hier der Namespace weggelassen
werden. Der Name wird deshalb mit ::base.html.twig
angegeben. Wie man an dem
Title-Block sieht, kann man nicht nur leere Blöcke mit Inhalt füllen, sondern auch bereits vorhandenen Inhalt
überschreiben. So ist es besonders einfach Vorgabewerte zu definieren und bei Bedarf zu ändern.
Best Practies
Es gibt einige Dinge, die das Leben mit Twig einfacher machen können:-
Wenn
{% extends %}
benutzt wird, muss es die ersten Anweisung im Template sein. - Es sollte so viele Blöcke wie möglich im Basis-Template definiert und mit sinnvollen Vorgabewerten belegt werden. Die untergeordneten Templates müssen so nur die veränderten Teile der Seite austauschen.
- Wenn ein Block in mehreren Templates definiert werden muss, ist dies ein Zeichen dafür, dass er in ein , übergeordnetes Template ausgelagert werden sollte.
- Wenn man den Inhalt eines Blocks aus einem übergeordneten Template benötigt, kann man ihn mit der
{{ parent() }}
-Funktion bekommen (Zeile 6):
Kommentare
Einen Kommentar schreiben