Skip to main content

Was ist Livewire?

Wollte man in Laravel eine dynamische UI bauen, blieb früher nur die Kombination mit einem JavaScript-Framework wie Vue.js oder React – oder man schrieb selbst AJAX-Requests. Livewire ist das Laravel-Paket, das dieses Problem löst. Reaktive UIs lassen sich allein mit PHP und Blade bauen. Funktionen wie Formular-Validierung in Echtzeit, Live-Suche oder Counter, die früher JavaScript benötigten, lassen sich vollständig in PHP umsetzen.
Livewire 4 läuft ab Laravel 10 und ab PHP 8.1. Die aktuelle Version ist Livewire 4.

Überblick über die Funktionsweise

Eine Livewire-Komponente ist eine Kombination aus einer serverseitigen PHP-Klasse und einem Blade-Template. Wenn der Nutzer auf einen Button klickt oder in ein Formular tippt, sendet Livewire im Hintergrund einen AJAX-Request, führt PHP aus und aktualisiert nur die geänderten Teile der Seite. Entwickler müssen sich um diesen Mechanismus nicht kümmern und schreiben ausschließlich PHP.

Installation

Führen Sie im Root-Verzeichnis Ihrer Laravel-Anwendung folgenden Befehl aus:
Da Laravels Auto-Discovery aktiv ist, sind keine weiteren Einstellungen erforderlich.

Layout-Datei erzeugen

Wenn Sie Livewire als Full-Page-Komponente verwenden, wird eine Layout-Datei benötigt. Diese generieren Sie mit folgendem Artisan-Kommando:
Es wird resources/views/layouts/app.blade.php erzeugt.
@livewireStyles und @livewireScripts laden die Assets von Livewire und Alpine.js automatisch.

Die erste Komponente

Für das Erzeugen von Livewire-Komponenten gibt es ein eigenes Artisan-Kommando. Bauen wir einen einfachen Counter.
Dieses Kommando erzeugt eine Single-File-Komponente unter resources/views/components/⚡counter.blade.php.
Das ⚡ im Dateinamen dient der raschen Erkennung von Livewire-Komponenten und verbessert die Übersichtlichkeit im Editor. Wenn Sie es nicht möchten, lässt es sich per Konfiguration deaktivieren.
Bearbeiten Sie die generierte Datei wie folgt:
Um diese Komponente in ein Blade-Template einzubetten, verwenden Sie die reguläre Blade-Component-Syntax:
Bei jedem Klick auf einen Button wird der Zähler ohne Seiten-Reload aktualisiert. wire:click ruft anstelle von JavaScript eine PHP-Methode auf.

Properties und Actions

Properties – wire:model

Mit der Direktive wire:model binden Sie ein Eingabe-Element bidirektional an eine Property der Komponente.
Standardmäßig synchronisiert wire:model erst dann mit dem Server, wenn eine Action ausgeführt wird (etwa das Absenden des Formulars). Wenn Sie bei jeder Eingabe synchronisieren möchten, ergänzen Sie den Modifier .live.

Actions – wire:click, wire:submit

wire:click bindet eine Methode an ein Click-Event, wire:submit an das Submit-Event eines Formulars.

Echtzeit-Validierung

In Livewire 4 lassen sich Validierungsregeln direkt an Properties über das Attribut #[Validate] definieren.
Bei Properties mit #[Validate] läuft bei jeder Änderung automatisch die Validierung. In Kombination mit wire:model.live.blur erhalten Sie eine Echtzeit-Validierung, bei der die Fehlermeldung genau im Moment des Fokusverlusts angezeigt wird.
$this->validate() prüft beim Absenden alle Properties gemeinsam. Die empfohlene Vorgehensweise ist die zweistufige Kombination mit der automatischen Validierung per #[Validate].

Lifecycle-Hooks

Livewire-Komponenten kennen mehrere Lifecycle-Hooks.

mount() – Initialisierung

mount() wird für die Initialisierung der Komponente genutzt. Es ersetzt den Konstruktor.

updated() – Verarbeitung nach der Property-Änderung

Wenn Sie nach der Aktualisierung einer Property eingreifen möchten, verwenden Sie updated(). Um eine bestimmte Property zu adressieren, hängen Sie deren Namen an den Methodennamen an.
Bei jeder Eingabe wird automatisch in Kleinbuchstaben umgewandelt.

Integration mit Laravel

Nutzung von Eloquent-Modellen

Livewire kann Eloquent-Modelle direkt als Property halten.

Form-Objekte

Komplexe Formulare können in Form-Objekte ausgelagert werden, damit Komponenten schlank bleiben.
Verwenden Sie das Form-Objekt in einer Komponente:

Fazit

Anwendungsfälle, für die Livewire besonders geeignet ist: Livewire ist für Laravel-Entwickler, die Blade bereits einmal verwendet haben, sofort einsatzbereit. Der größte Vorteil ist, dass sich interaktive UIs ohne die Lernkurve eines JavaScript-Frameworks umsetzen lassen. Für Szenarien mit SPA-nahen, hochkomplexen Interaktionen eignet sich Inertia.js besser; für Formulare, Admin-Panels oder Data Tables ist Livewire jedoch häufig einfacher umzusetzen. Beginnen Sie am besten mit einer kleinen Komponente.

Offizielle Livewire-Dokumentation

Alle Funktionen (Datei-Uploads, Pagination, Testen usw.) finden Sie in der offiziellen Dokumentation.
Zuletzt geändert am 13. Juli 2026