Twig (Template-Engine)

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 Symfony benutzt Twig als Standard für die Template-Engine.[5]

Twig
Basisdaten

Hauptentwickler Armin Ronacher,[1] Fabien Potencier
Entwickler SensioLabs
Erscheinungsjahr 2009
Aktuelle Version 3.10.3[2]
(16. Mai 2024)
Betriebssystem Plattformunabhängig
Programmier­sprache PHP
Kategorie Template-Engine
Lizenz BSD-Lizenz
twig.symfony.com

Funktionen

Bearbeiten
  • 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:

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

Bearbeiten

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 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

Bearbeiten
  • 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

Bearbeiten

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

Bearbeiten
Portal: Freie Software – Übersicht zu Wikipedia-Inhalten zum Thema Freie Software
  • 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.
Bearbeiten

Einzelnachweise

Bearbeiten
  1. Original Repository
  2. Release 3.10.3. 16. Mai 2024 (abgerufen am 25. Mai 2024).
  3. a b 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.@1@2Vorlage:Webachiv/IABot/docs.symfony-reloaded.org
  6. a b c twig.symfony.com
  7. Extending Twig
  8. twig.symfony.com
  9. twig.symfony.com
  10. twig.symfony.com