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 escapte Daten anzeigen
Um das Escaping zu umgehen, verwenden Sie{!! !!}.
Koexistenz mit JavaScript-Frameworks
Wenn Ihr JavaScript-Framework ebenfalls geschweifte Klammern verwendet, umgehen Sie Blade mit@.
@, {{ 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)
@unless schreiben Sie „falls nicht”-Bedingungen.
@isset und @empty.
Auth-Direktiven
Switch
Schleifen
Blade stellt praktische Direktiven für Schleifen bereit.@break und @continue.
Loop-Variable
In@foreach-Schleifen erhalten Sie über die Variable $loop Informationen zur aktuellen Iteration.
| Eigenschaft | Beschreibung |
|---|---|
$loop->index | Aktueller Loop-Index (beginnt bei 0) |
$loop->iteration | Aktuelle Iteration (beginnt bei 1) |
$loop->remaining | Verbleibende Iterationen |
$loop->count | Anzahl der Elemente |
$loop->first | Erste Iteration? |
$loop->last | Letzte Iteration? |
$loop->even | Gerade Iteration? |
$loop->odd | Ungerade Iteration? |
$loop->depth | Verschachtelungstiefe der Schleife |
$loop->parent | Bei verschachtelten Schleifen die Variable der übergeordneten Schleife |
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.Layouts mit Template-Vererbung
Als klassische Methode gibt es die Template-Vererbung mit@extends, @section und @yield.
Eltern-Layout definieren:
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.
CSRF-Schutz in Formularen
Für HTML-Formulare inweb-Routen, die POST, PUT, PATCH oder DELETE senden, müssen Sie die Direktive @csrf einbinden.
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.Daten anzeigen
Daten anzeigen
{{ $variable }} mit Escaping, {!! $variable !!} ohne Escaping.Bedingungen
Bedingungen
@if / @elseif / @else / @endif, @unless, @isset, @empty, @auth, @guest.Schleifen
Schleifen
@for, @foreach, @forelse, @while und Steuerung über die $loop-Variable.Layouts
Layouts
Komponentenbasiert (
<x-layout> und {{ $slot }}) oder Template-Vererbung (@extends, @section, @yield).Sub-Views
Sub-Views
@include bindet Views als wiederverwendbare Bausteine ein.