Skip to main content

Einführung

Blade ist die einfache, aber leistungsstarke Template-Engine, die mit Laravel geliefert wird. Im Unterschied zu manchen anderen PHP-Template-Engines schränkt Blade die Verwendung von rohem PHP-Code in Templates nicht ein. Alle Blade-Templates werden zu PHP-Code kompiliert und zwischengespeichert, sodass Blade nur einen minimalen Overhead verursacht. Blade-Templates verwenden die Endung .blade.php und liegen üblicherweise im Verzeichnis resources/views.

Blade-Kompilierungs-Ablauf

So wird eine .blade.php-Datei in eine HTML-Antwort umgewandelt. Einmal kompilierte Dateien werden zwischengespeichert, sodass Folgeaufrufe die Kompilierung überspringen.

Daten anzeigen

Um an eine Blade-View übergebene Daten anzuzeigen, umgeben Sie die Variable mit doppelten geschweiften Klammern.
Bei {{ }} schleust Blade den Wert automatisch durch PHPs htmlspecialchars und verhindert so XSS-Angriffe.
Nicht nur Variablen, sondern auch Rückgaben von PHP-Funktionen lassen sich ausgeben.

Nicht escapte Daten anzeigen

Um das Escaping zu umgehen, verwenden Sie {!! !!}.
Bei benutzerdefinierten Eingaben verwenden Sie unbedingt {{ }} und lassen Sie das automatische Escaping aktiv. {!! !!} mit nicht vertrauenswürdigen Werten führt zu XSS-Schwachstellen.

Koexistenz mit JavaScript-Frameworks

Wenn Ihr JavaScript-Framework ebenfalls geschweifte Klammern verwendet, umgehen Sie Blade mit @.
Blade entfernt in diesem Fall das @, {{ name }} bleibt aber unverändert im HTML, sodass das JavaScript-Framework es rendern kann.
Ob Sie Blade als Basis nutzen oder zu Livewire bzw. Inertia wechseln, vergleichen Sie am besten unter Frontend.

Blade-Direktiven

Bedingungen (if)

Mit @unless schreiben Sie „falls nicht”-Bedingungen.
Um zu prüfen, ob eine Variable gesetzt bzw. nicht leer ist, verwenden Sie @isset und @empty.

Auth-Direktiven

Switch

Schleifen

Blade stellt praktische Direktiven für Schleifen bereit.
Innerhalb von Schleifen steuern Sie den Ablauf mit @break und @continue.
Sie können die Bedingung auch direkt an die Direktive übergeben.

Loop-Variable

In @foreach-Schleifen erhalten Sie über die Variable $loop Informationen zur aktuellen Iteration.

Kommentare

Blade-Kommentare erscheinen nicht im gerenderten HTML.

Layouts

Layouts mit Komponenten

Für Laravel-Layouts wird der Einsatz von Blade-Komponenten empfohlen. Legen Sie zunächst eine Layout-Komponente an.
Dann erstellen Sie eine View, die dieses Layout nutzt.

Layouts mit Template-Vererbung

Als klassische Methode gibt es die Template-Vererbung mit @extends, @section und @yield. Eltern-Layout definieren:
Vererbung in der Kind-View:
Mit @parent fügen Sie Inhalte hinzu, ohne den Inhalt des @section aus dem Eltern-Layout zu ersetzen.

Sub-Views einbinden

Mit @include binden Sie eine Blade-View in eine andere ein. Alle in der Eltern-View verfügbaren Variablen stehen auch der eingebundenen View zur Verfügung.
Sie können auch zusätzliche Variablen übergeben.

CSRF-Schutz in Formularen

Für HTML-Formulare in web-Routen, die POST, PUT, PATCH oder DELETE senden, müssen Sie die Direktive @csrf einbinden.
Für PUT, PATCH und DELETE per Formular verwenden Sie @method.
Praxisrelevante CSRF-Maßnahmen inklusive Origin-Prüfung sowie X-CSRF-TOKEN / X-XSRF-TOKEN finden Sie unter CSRF-Schutz.

Zusammenfassung

Die wichtigsten Funktionen der Blade-Template-Engine im Überblick.
{{ $variable }} mit Escaping, {!! $variable !!} ohne Escaping.
@if / @elseif / @else / @endif, @unless, @isset, @empty, @auth, @guest.
@for, @foreach, @forelse, @while und Steuerung über die $loop-Variable.
Komponentenbasiert (<x-layout> und {{ $slot }}) oder Template-Vererbung (@extends, @section, @yield).
@include bindet Views als wiederverwendbare Bausteine ein.
Zuletzt geändert am 13. Juli 2026