Twig (Template-Engine)

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
Twig
Basisdaten

Hauptentwickler Armin Ronacher,[1] Fabien Potencier
Entwickler SensioLabs
Erscheinungsjahr 2009
Aktuelle Version 3.15.0[2]
(17. November 2024)
Betriebssystem Plattformunabhängig
Programmier­sprache 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.[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]

  • 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 | Quelltext 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 | Quelltext 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') }}.

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 %}
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.

Einzelnachweise

[Bearbeiten | Quelltext bearbeiten]
  1. Original Repository
  2. Release 3.15.0. 17. November 2024 (abgerufen am 27. November 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