Twig (Template-Engine)
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 Symfony2 benutzt Twig als Standard für die Template-Engine.[5]
| Twig | |
|---|---|
| Basisdaten | |
| Maintainer | Armin Ronacher,[1] Fabien Potencier | 
| Entwickler | SensioLabs | 
| Erscheinungsjahr | 2009 | 
| Aktuelle Version | 3.3.2[2]  (16. Mai 2021)  | 
| Betriebssystem | Plattformunabhängig | 
| Programmiersprache | PHP | 
| Kategorie | Template-Engine | 
| Lizenz | BSD-Lizenz | 
| twig.symfony.com | |
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]
- Eclipse
 - Komodo
 - NetBeans
 - PhpStorm (nativ)
 - Visual Studio
 
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{% set foo = 'bar' %}, für die Wertezuweisung.[9]{% if i is defined and i == 1%} ... {% endif %}: Bedingte Anweisung und Verzweigung.{% for i in 0..10 %} ... {% endfor %}: Schleifen
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
    
loopbeinhaltet Informationen zur aktuellen Iteration innerhalb einer Schleife. So gibtloop.indexdie 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
    
    
Weblinks
    
- Offizielle Website
 - Fabien Potencier: Templating Engines in PHP. 7. Oktober 2009. Abgerufen am 6. April 2011.
 - Fabien Potencier: Templating Engines in PHP (Перевод: Шаблонизаторы в PHP) (ru) 20. November 2009. Abgerufen am 6. April 2011.
 
Einzelnachweise
    
- Original Repository
 - Release 3.3.2. 16. Mai 2021 (abgerufen am 22. Mai 2021).
 - 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.
 - twig.symfony.com
 - Extending Twig
 - twig.symfony.com
 - twig.symfony.com
 - twig.symfony.com