NCA Social Media
Aktualisiert:
Autor:
Roland Golla
Grüne Datenwürfel fließen durch ein Rohr mit Schild Twig ins fertige Layout

Was ist Twig?

Twig ist die Template Engine für PHP. Sie trennt HTML von Anwendungslogik, kompiliert Templates zu optimiertem PHP Code und escapet Ausgaben standardmäßig. Fabien Potencier hat Twig entwickelt, es steht unter BSD Lizenz und ist die Standard Template Sprache in Symfony.
Die Syntax besteht aus zwei Bausteinen: doppelte geschweifte Klammern geben etwas aus, geschweifte Klammern mit Prozentzeichen steuern die Logik. Dazu kommen Filter, Funktionen und Tests, die sich verketten lassen.
Code:
          

<h1>{{ page.title }}</h1>

{% for product in products %}
    <p>{{ product.name|upper }}</p>
{% else %}
    <p>Keine Produkte gefunden.</p>
{% endfor %}

Aktuell ist die Serie 3.x. Twig 1 und 2 bekommen nur noch Sicherheitsupdates. Wer heute ein Projekt aufsetzt oder ein altes ablöst, arbeitet mit Twig 3.

Twig mit NCA: Schnelle Hilfe vom Spezialisten

Never Code Alone baut seit Jahren Symfony und Sulu Projekte. Twig ist dabei die Schicht, die am häufigsten von mehreren Personen angefasst wird, und die, in der sich Altlasten am hartnäckigsten halten. Wir kennen Template Ordner mit hunderten Dateien, in denen niemand mehr weiß, welche Variable ein Block erwartet.
Dabei helfen wir konkret: PHP Consulting für die Architektur, Symfony Frontend Refactoring für die Templates selbst, Legacy Modernisierung für gewachsene Projekte, Symfony Coding Standards für einheitliche Konventionen und Twig Hooks für modulare Layouts. Für die Editor Seite gibt es die Symfony Language Tools.

Symfony und Twig Beratung von Never Code Alone

Finde das passende Angebot für dein Projekt

Anfrage-Konfiguration

Starten Sie Ihre Anfrage

Projektart
Infos
Nachricht

Eliminierung technischer Schulden mit PHPStan, Rector PHP und PHPUnit. Über 20 Jahre Praxiserfahrung in skalierbaren Backends.

CORE EXPERTISE

Gesetzliche Konformität & Inklusion. Optimierung von Performance und Conversion durch radikal nutzerzentriertes, universelles Design.

BFSG COMPLIANT

Skalierbare KI-Systeme mit echtem Code Ownership. CI/CD, Backup-Strategien und Infrastruktur, die mit deinem Team wächst.

ENTERPRISE READY

Neu in Twig 3.29: Documentation Comments

Twig 3.29 bringt Documentation Comments. Sie beschreiben Blocks, Macros, Ausgaben und Variablen und verändern das gerenderte Ergebnis nicht. Die Schreibweise nutzt die bekannten Twig Kommentare mit einem zusätzlichen Hash Zeichen, der Kommentar gehört zu dem Konstrukt, das direkt danach folgt.
Code:
          

{## Zeigt den Titel der aktuellen Seite. ##}
{{ page_title }}

{## Rendert ein HTML Eingabefeld. ##}
{% macro input(name, value = null) %}
    ...
{% endmacro %}

Bisher haben Teams eigene Annotationen in normale Kommentare geschrieben, etwa mit einem prop Präfix. Das führte Namen und Typen doppelt und zwang jedes Werkzeug, ein projektspezifisches Format zu verstehen. Jetzt gibt es dafür eine Schreibweise, die alle verstehen.
Geschlossen wird entweder mit dem normalen Marker oder mit dem symmetrischen Gegenstück. Whitespace Control funktioniert wie bei gewöhnlichen Kommentaren. Mehrere Kommentare direkt untereinander werden zusammengefasst, so bleibt jede Zeile kurz lesbar.
Innerhalb eines Tags reichen zwei Hash Zeichen. Der Kommentar läuft bis zum Zeilenende und beschreibt die Variable, die in der nächsten Zeile beginnt. Damit stehen Typ und Erklärung im types Tag endlich an derselben Stelle.
Code:
          

{% types {
    ## Ob die Antwort richtig ist.
    is_correct: 'boolean',

    ## Punkte für diese Antwort.
    score?: 'number',
} %}

Dasselbe Muster gilt für Zuweisungen mit set, für Schleifenvariablen in for und für Macro Argumente.

Metadaten für Editoren und Analyse Werkzeuge

Der kompilierte Code ändert sich nicht. Twig hängt den Text an die geparsten Nodes, wo Node Visitors ihn über getDocumentation auslesen. Damit haben IDEs, statische Analyse und Dokumentationsgeneratoren zum ersten Mal eine gemeinsame Quelle für Beschreibungen.
Die Symfony Language Tools verstehen die Metadaten bereits. Für Variablen aus dem types Tag zeigen Completion und Hover den Typ, den Pflichtstatus und die hinterlegte Beschreibung.
Ein Kommentar wirkt nur an unterstützten Stellen. Nicht dokumentiert werden unter anderem einfache Variablenzugriffe, Schlüssel in Mappings, Funktionsargumente, benannte Aufrufargumente, Destructuring und variadische Macro Argumente. Dort bleibt der Text ein gewöhnlicher Kommentar.
Für die Planung wichtig: die Funktion ist in 3.29 als experimentell markiert, Syntax und API können sich noch ändern. Ältere Twig Versionen lesen die Schreibweise als normalen Kommentar, ab 3.15 gilt das auch für die Inline Variante. Für eine Komponenten Bibliothek ist der Einstieg damit risikoarm, eine Umstellung von hunderten Templates würden wir aktuell noch zurückstellen.

Template Vererbung: extends, block und include

Das Herzstück von Twig ist die Vererbung. Ein Basis Template definiert das Grundgerüst und markiert austauschbare Stellen als Block. Kindtemplates erben davon und füllen nur die Blöcke, die sie ändern wollen.
Code:
          

{# base.html.twig #}
<html>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>

{# page.html.twig #}
{% extends 'base.html.twig' %}

{% block content %}
    <h1>Hallo</h1>
{% endblock %}

Für wiederverwendbare Fragmente gibt es include, für parametrisierbare Bausteine Macros. Wer Layouts modular halten will, ohne ganze Templates zu überschreiben, findet mit Twig Hooks aus dem Sylius Stack einen konfigurierbaren Weg.
Die Regel aus der Praxis: eine klare Hierarchie schlägt jede clevere Konstruktion. Wenn ein Template mehr als drei Ebenen tief erbt, ist meistens die Struktur das Problem, nicht Twig.

Autoescaping und Sandbox: Sicherheit ab Werk

Twig escapet Ausgaben standardmäßig für den HTML Kontext. Das verhindert einen großen Teil der klassischen XSS Lücken, ohne dass jemand daran denken muss. Der raw Filter hebelt das aus und gehört deshalb in jedes Code Review.
Für Templates aus unsicherer Quelle gibt es die Sandbox. Sie beschränkt erlaubte Tags, Filter und Methoden. Wichtig zu wissen: die Sandbox schützt nicht gegen Ressourcenverbrauch, das hat das Twig Team im Mai 2026 in der Dokumentation klargestellt.
Halte Twig aktuell. In 3.26 wurden mehrere Filter nachgeschärft, die HTML ausgaben und fälschlich als sicher markiert waren. Ein Dependency Update ist hier keine Kür, sondern Teil der Grundhygiene, genauso wie Composer Audit in der Pipeline.

Das types Tag: Templates sagen, was sie erwarten

Mit dem types Tag deklariert ein Template die Variablen, die es erwartet, samt Typ. Ein Name ohne Zusatz ist Pflicht, ein Fragezeichen macht die Variable optional. Für Komponenten Bibliotheken ist das der Unterschied zwischen Raten und Wissen.
Code:
          

{% types {
    id: 'string',
    multiple?: 'boolean',
    default_value?: 'string|null',
} %}

Namen, Typen und Optionalität bleiben damit an einer Stelle, statt sich über Controller, Doku und Templates zu verteilen. Die Beschreibung dazu liefern die Documentation Comments aus Twig 3.29.

Twig Syntax im Überblick

Baustein Schreibweise Wofür
Ausgabe Doppelte geschweifte Klammern Variablen und Ausdrücke rendern
Tag Klammer mit Prozentzeichen Logik wie for, if, block, macro
Kommentar Klammer mit Hash Notiz ohne Ausgabe
Documentation Comment Klammer mit zwei Hash Zeichen Beschreibung als Metadatum ab 3.29

Twig in der NCA Praxis: Symfony und Sulu

Wir bauen unsere eigenen Projekte mit Symfony und Sulu CMS. In Sulu definieren Twig Templates, wie Content Blöcke im Frontend erscheinen, während die Struktur aus dem XML kommt. Wer die Templates sauber hält, hält damit auch die Redaktionsoberfläche sauber.
Aus Refactoring Projekten kennen wir das typische Muster: Logik ist ins Template gewandert, Filter machen Dinge, die in einen Service gehören, und niemand traut sich mehr, etwas zu löschen. Der Weg raus führt nicht über einen Agenten, der alles umschreibt. Erst kommen Quality Gates mit PHPStan, PHPUnit, Functional Tests und E2E Tests mit Cypress. Dann wird aufgeräumt.
KI hilft dabei als Werkzeug: Testfälle schreiben, fremden Code erklären, Fleißarbeit übernehmen. Über die erwarteten Variablen eines Templates muss ein Modell nicht mehr raten, wenn types Tag und Documentation Comments gepflegt sind. Wie wir das absichern, steht in den NCA PHP AI Coding Guidelines.

Documentation comments do not change compiled output or rendering.

Fabien Potencier, Erfinder von Symfony und Twig – Symfony Blog

NCA Erfahrung mit Twig Projekten

Twig ist bei uns kein Nebenschauplatz. Es ist die Schicht, in der Frontend und Backend aufeinandertreffen, und die erste Stelle, an der ein Projekt unübersichtlich wird. Wir arbeiten dort direkt am Code mit, nicht nur auf Folien.
Typische Themen aus unseren Projekten: Template Architektur ordnen, Logik aus Templates in Services holen, alte Overrides durch saubere Vererbung oder Twig Hooks ersetzen, Twig Versionen aktuell halten und die Editor Umgebung so aufsetzen, dass Fehler vor dem Commit auffallen.
Der Einstieg ist ein kostenloses Kennenlernen. Danach schätzen wir den Aufwand ein und rechnen transparent minutengenau ab. Keine Pakete, kein Festpreis, keine Mindestlaufzeit.
CYPRESS.IO Ambassador und IT Consultant für QA Engenieering und Qualität in PHP Projekten.

Erreichen Sie unsere PHP Consultant Spezialisten

Wir sind Experten für PHP und helfen Ihnen, Ihre digitalen Herausforderungen zu meistern. Unser erfahrenes Team unterstützt Sie bei PHP Updates, PHP Refactoring und berät Sie remote zu allen Fragen rund um PHP. Mit unseren vollautomatischen CI/CD Deployments und einer robusten Docker-Infrastruktur bringen wir Ihre PHP-Projekte auf das nächste Level. Vertrauen Sie auf unsere Expertise für zuverlässige und skalierbare PHP-Lösungen.

Häufige Fragen zu Twig

Die Fragen, die in Projekten und Code Reviews rund um Twig immer wieder auftauchen.

Was ist Twig 2026 genau?

Twig ist die Template Engine für PHP, entwickelt von Fabien Potencier und veröffentlicht unter BSD Lizenz. Templates werden zu optimiertem PHP Code kompiliert und gecacht. Ausgaben werden standardmäßig escapet. In Symfony ist Twig die Standard Template Sprache, auch Sulu, Drupal und Shopware setzen darauf.

Welche Twig Version sollte man 2026 nutzen?

Die Serie 3.x. Twig 1 und 2 erhalten nur noch Sicherheitsupdates und sollten in neuen Projekten nicht mehr vorkommen. Innerhalb von 3.x lohnt es sich, aktuell zu bleiben: in den Releases von 2026 wurden mehrere Filter nachgeschärft, die HTML ausgaben und fälschlich als sicher markiert waren.

Was sind Documentation Comments in Twig 2026?

Eine ab Twig 3.29 verfügbare Schreibweise, um Blocks, Macros, Ausgaben und Variablen zu beschreiben. Sie nutzt die bekannten Twig Kommentare mit einem zusätzlichen Hash Zeichen und verändert den gerenderten Output nicht. Twig hängt den Text an die geparsten Nodes, wo Werkzeuge ihn auslesen können.

Ist Twig 2026 noch zeitgemäß gegenüber JavaScript Frontends?

Ja, für serverseitig gerenderte Anwendungen. Twig liefert fertiges HTML, das schnell ausgeliefert wird und ohne JavaScript funktioniert. In Kombination mit Symfony UX, Turbo oder HTMX lassen sich interaktive Teile ergänzen, ohne die ganze Anwendung als Single Page App zu bauen.

Wie sicher ist Twig 2026 gegen XSS?

Autoescaping ist standardmäßig aktiv und escapet Ausgaben für den HTML Kontext. Das entschärft einen großen Teil der klassischen Lücken. Kritisch bleiben der raw Filter und Filter, die HTML ausgeben. Beide gehören ins Code Review, ergänzt um regelmäßige Dependency Updates.

Was ist der Unterschied zwischen extends und include?

extends baut eine Vererbungsbeziehung auf: das Kindtemplate übernimmt das Grundgerüst und füllt einzelne Blöcke. include bindet ein eigenständiges Fragment an einer Stelle ein. Faustregel: Layout über Vererbung, wiederverwendbare Bausteine über include oder Macros.

Wofür ist das types Tag gut?

Es deklariert, welche Variablen ein Template erwartet und welchen Typ sie haben. Ein Name ohne Zusatz ist Pflicht, ein Fragezeichen macht die Variable optional. Für Komponenten Bibliotheken ist das die Grundlage, damit IDEs und statische Analyse überhaupt etwas prüfen können.

Sind Documentation Comments produktionsreif?

Sie sind in Twig 3.29 als experimentell markiert, Syntax und Metadaten API können sich noch ändern. Der Output bleibt in jeder Twig Version gleich, das Risiko ist also gering. Wir empfehlen den Einstieg in einem abgegrenzten Bereich statt einer projektweiten Umstellung.

Wie debuggt man Twig Templates?

Der Symfony Profiler zeigt gerenderte Templates und ihre Verschachtelung. Die dump Funktion gibt Variablen im Template aus, wenn die Debug Extension aktiv ist. Für Fehler in der Struktur hilft der lint Befehl, der Templates prüft, ohne sie zu rendern.

Kann man Twig ohne Symfony einsetzen?

Ja. Twig ist ein eigenständiges Composer Paket und lässt sich in jedes PHP Projekt einbinden. Man erzeugt einen Loader für das Template Verzeichnis und eine Environment Instanz. Symfony liefert lediglich die Integration mit Services, Übersetzungen und Routing mit.

Wie hält man Twig Templates wartbar?

Logik gehört in Services, nicht ins Template. Die Vererbungstiefe sollte flach bleiben. Wiederkehrende Bausteine gehören in Macros oder Components. Und vor jedem Aufräumen stehen Quality Gates: statische Analyse, Unit Tests, funktionale Tests und E2E Tests, sonst wird Refactoring zum Blindflug.

Wie unterstützt Never Code Alone bei Twig?

Wir beraten zur Einordnung und arbeiten in Symfony und Sulu Projekten direkt am Code mit. Typische Themen sind Template Architektur, Frontend Refactoring, Coding Standards und die passende Editor Umgebung. Der Einstieg ist ein kostenloses Kennenlernen, danach schätzen wir den Aufwand und rechnen minutengenau ab.