Twig
Basisdaten
Maintainer Armin Ronacher, Fabien Potencier
Entwickler SensioLabs
Erscheinungsjahr 2009
Aktuelle Version 3.7.1
(28. August 2023)
Betriebssystem Plattformunabhängig
Programmiersprache PHP
Kategorie Template-Engine
Lizenz BSD-Lizenz
twig.symfony.com

Twig ist eine Template-Engine für die Programmiersprache PHP. Die Syntax wurde von der Template-Engine Jinja sowie der des Django-Frameworks beeinflusst. Twig ist eine freie Software, 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.

Funktionen

  • Unterstützung von Kontrollfluss
  • automatische Maskierung
  • Vererbung von Vorlagen
  • variable Filter
  • Unterstützung für Internationalisierung mittels gettext
  • Makros
  • Erweiterbarkeit

Twig wird von den folgenden Integrierte Entwicklungsumgebungen unterstützt:

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 ist in folgender Tabelle in aufsteigender Priorität aufgelistet:

OperatorFunktion
b-andKonjunktion (logisch)
b-xorKontravalenz (logisch)
b-orDisjunktion (logisch)
orDisjunktion
andKonjunktion
==Gleichheit
 !=Ungleichheit
<kleiner als
>größer als
>=größer gleich
<=kleiner gleich
ininnerhalb
matcheskorrespondiert
starts withbeginnt mit
ends withendet mit
..Sequenz (z. B.: 1..5)
+Plus
-Minus
~Verkettung
*Multiplikation
/Division
//Division (abgerundet)
 %Modulo
isTest (ex: ist definiert oder ist nicht leer)
**Potenz
|Filter
[]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:

  • 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 %}&nbsp;&nbsp;{% 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.

Einzelnachweise

  1. Original Repository
  2. Release 3.7.1. 28. August 2023 (abgerufen am 19. September 2023).
  3. 1 2 Twig documentation for template designers
  4. Twig repository on GitHub
  5. 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.
  6. 1 2 3 twig.symfony.com
  7. Extending Twig
  8. twig.symfony.com
  9. twig.symfony.com
  10. twig.symfony.com
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.