Twig ist eine Template-Engine für die Programmiersprache PHP. Die Syntax wurde von der Template-Engine Jinja sowie der des Django-Frameworks beeinflusst.[3] Twig ist eine freie Software,[4] unter der BSD-Lizenz, und wird von Fabien Potencier betreut. Die erste Version wurde von Armin Ronacher entwickelt. Das PHP-Framework Symfony benutzt Twig als Standard für die Template-Engine.[5]
Funktionen
- Unterstützung von Kontrollfluss
- automatische Maskierung
- Vererbung von Vorlagen
- variable Filter[6]
- Unterstützung für Internationalisierung mittels gettext
- Makros
- Erweiterbarkeit[3][7]
Twig wird von den folgenden Integrierte Entwicklungsumgebungen unterstützt:[8]
Des Weiteren wird die Templating-Engine von folgenden Editoren unterstützt:
Syntax
Twig arbeitet mit drei Arten von Bezeichnern:
{{ ... }}
, um den Inhalt einer Variable oder das Ergebnis eines Ausdrucks (z. B. um eine vererbte Twig-Vorlage mit {{ parent() }}
) auszugeben.
{# ... #}
, für Kommentare, die nicht weiter verarbeitet werden
{% ... %}
, für Kommandos und Kontrollstrukturen durch z. B. Schleifen oder Verzweigungen
Der Apostroph (') ist die Escape-Sequenz.
So kann ein iteratives Array auf folgendem Wege erzeugt werden:
{% set meinArray = [1, 2] %}
Ähnlich gilt dies für Assoziative Datenfelder:
{% set meinArray = {'key': 'value'} %}
Operatoren und Vorrang
Die Operatoren und ihr Vorrang[10] ist in folgender Tabelle in aufsteigender Priorität aufgelistet:
Operator |
Funktion
|
b-and |
Konjunktion (logisch)
|
b-xor |
Kontravalenz (logisch)
|
b-or |
Disjunktion (logisch)
|
or |
Disjunktion
|
and |
Konjunktion
|
== |
Gleichheit
|
!= |
Ungleichheit
|
< |
kleiner als
|
> |
größer als
|
>= |
größer gleich
|
<= |
kleiner gleich
|
in |
innerhalb
|
matches |
korrespondiert
|
starts with |
beginnt mit
|
ends with |
endet mit
|
.. |
Sequenz (z. B.: 1..5 )
|
+ |
Plus
|
- |
Minus
|
~ |
Verkettung
|
* |
Multiplikation
|
/ |
Division
|
// |
Division (abgerundet)
|
% |
Modulo
|
is |
Test (ex: ist definiert oder ist nicht leer )
|
** |
Potenz
|
| |
Filter[6]
|
[] |
Datenfeld
|
. |
Attribut oder Methode eines Objects (z. B.: land.name )
|
Filter
Filter ermöglichen die Weiterverarbeitung eines Ausdrucks vor der Ausgabe und werden durch eine Pipe nach dem Ausdruck eingeleitet. Mögliche Filter sind beispielsweise:[6]
capitalize
: ändert das erste Zeichen einer Zeichenfolge in einen Großbuchstaben.
upper
: ändert alle Zeichen einer Zeichenfolge in Großbuchstaben.
first
: zeigt die erste Zeile eines Datenfeldes an.
length
: gibt die Größe des Variablenwertes zurück.
Spezielle Variablen
loop
beinhaltet Informationen zur aktuellen Iteration innerhalb einer Schleife. So gibt loop.index
die Anzahl der bereits ausgeführten Iterationen zurück.
- Globale Variablen beginnen mit Unterstrichen. Zum Beispiel:
- _route (URL-Teil hinter der Domain)
- _self (eigener Dateiname)
- So wird auf folgendem Weg der Pfad zur Seite angezeigt werden:
{{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }}
- Die CGI Umgebungsvariablen, z. B.
{{ app.request.server.get('SERVER_NAME') }}
.
Beispiel
Das folgende Beispiel zeigt den grundlegenden Einsatz von Twig.
{% extends "base.html" %}
{% block navigation %}
<ul id="navigation">
{% for item in navigation %}
<li>
<a href="{{ item.href }}">
{% if item.level == 2 %} {% endif %}
{{ item.caption|upper }}
</a>
</li>
{% endfor %}
</ul>
{% endblock navigation %}
Siehe auch
- Smarty
- Twital, eine Template-Engine, die ihre Quellen in Twig templates kompiliert und so Zusatzfunktionen wie kontextbasiertes Maskieren, Attributausdrücke sowie eine höhere Lesbarkeit bietet.
Weblinks
Einzelnachweise
- ↑ Original Repository
- ↑ Release 3.21.1. 3. Mai 2025 (abgerufen am 1. Juni 2025).
- ↑ a b Twig documentation for template designers
- ↑ Twig repository on GitHub
- ↑ Symfony2 Documentation (Memento des Originals vom 5. August 2010 im Internet Archive)
Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/docs.symfony-reloaded.org
- ↑ a b c twig.symfony.com
- ↑ Extending Twig
- ↑ twig.symfony.com
- ↑ twig.symfony.com
- ↑ twig.symfony.com