Skip to main content

Wat is Livewire?

Wilde je vroeger een dynamische UI bouwen met Laravel, dan kon dat alleen door een JavaScript-framework zoals Vue.js of React te combineren, of door zelf AJAX-requests te schrijven. Livewire is het Laravel-pakket dat dit probleem oplost. Je bouwt reactieve UI’s met alleen PHP en Blade. Realtime formuliervalidatie, live zoeken, tellers — functionaliteit waarvoor je vroeger JavaScript nodig had, implementeer je volledig in PHP.
Livewire 4 werkt met Laravel 10 en hoger en PHP 8.1 en hoger. De huidige nieuwste versie is Livewire 4.

Hoe het werkt in het kort

Een Livewire-component is een combinatie van een PHP-klasse op de server en een Blade-template. Klikt een gebruiker op een knop of typt hij in een formulier, dan stuurt Livewire achter de schermen een AJAX-request, voert het PHP uit en werkt het alleen de gewijzigde delen van de pagina bij. Als ontwikkelaar hoef je je van dit mechanisme niets aan te trekken en schrijf je alleen PHP.

Installatie

Voer het volgende commando uit in de rootdirectory van je Laravel-applicatie.
De automatische pakketdetectie van Laravel is actief, dus extra configuratie is niet nodig.

Het layoutbestand aanmaken

Gebruik je een component als volledige pagina, dan heb je een layoutbestand nodig. Dat genereer je met het volgende Artisan-commando.
Er wordt een resources/views/layouts/app.blade.php gegenereerd.
@livewireStyles en @livewireScripts laden automatisch de assets van Livewire en Alpine.js.

Je eerste component

Er is een Artisan-commando om Livewire-componenten te genereren. Laten we een eenvoudige teller maken.
Dit commando genereert een single-file component genaamd resources/views/components/⚡counter.blade.php.
De ⚡ in de bestandsnaam dient om Livewire-componenten in één oogopslag te herkennen. Dat vergroot de zichtbaarheid in je editor. Heb je hem niet nodig, dan kun je hem uitschakelen in de configuratie.
Bewerk het gegenereerde bestand als volgt.
Om dit component in een Blade-template te plaatsen, gebruik je de gewone Blade-componentsyntaxis.
Bij elke klik op een knop wordt de telling bijgewerkt zonder paginareload. wire:click roept in plaats van JavaScript een PHP-methode aan.

Properties en acties

Properties — wire:model

Met de directive wire:model bind je invoerelementen tweerichtings aan de properties van je component.
Standaard synchroniseert wire:model alleen met de server wanneer een actie wordt uitgevoerd (zoals het verzenden van een formulier). Wil je bij elke invoer synchroniseren, voeg dan de modifier .live toe.

Acties — wire:click, wire:submit

wire:click koppelt een methode aan het klikevent, wire:submit aan het verzendevent van een formulier.

Realtime validatie

In Livewire 4 kun je met het #[Validate]-attribute validatieregels rechtstreeks op een property definiëren.
Properties met #[Validate] worden bij elke update automatisch gevalideerd. Combineer je dit met wire:model.live.blur, dan krijg je een realtime validatie-ervaring waarbij foutmeldingen verschijnen zodra een veld de focus verliest.
$this->validate() valideert bij het verzenden van het formulier alle properties in één keer. Het aanbevolen patroon is een tweetrapsaanpak: automatische validatie via #[Validate] plus deze aanroep.

Lifecycle-hooks

Livewire-componenten hebben een aantal lifecycle-hooks.

mount() — initialisatie

mount() gebruik je voor de initialisatie van het component. Het is het alternatief voor een constructor.

updated() — verwerking na een propertywijziging

Wil je iets doen nadat een property is bijgewerkt, gebruik dan updated(). Richt je je op een specifieke property, dan neem je die op in de methodenaam.
Bij elke invoer wordt de tekst automatisch omgezet naar kleine letters.

Integratie met Laravel

Eloquent-modellen gebruiken

Livewire kan Eloquent-modellen rechtstreeks in properties bewaren.

Formulierobjecten

Complexe formulieren kun je uitsplitsen naar formulierobjecten, zodat je component eenvoudig blijft.
Het formulierobject gebruik je vervolgens vanuit je component.

Conclusie

Een overzicht van de use-cases waarvoor Livewire bijzonder geschikt is. Elke Laravel-ontwikkelaar die “weleens Blade heeft gebruikt” kan vandaag nog met Livewire aan de slag. De grootste kracht is dat je interactieve UI’s realiseert zonder de leercurve van een JavaScript-framework. Heb je geavanceerde interacties op SPA-niveau nodig, dan past Inertia.js beter, maar voor formulieren, beheerpanelen en datatabellen is Livewire vaak eenvoudiger te implementeren. Probeer het eerst eens met één klein component.

Officiële documentatie van Livewire

Raadpleeg de officiële documentatie voor alle functies van Livewire (bestandsuploads, paginering, testen, enz.).
Laatst gewijzigd op 6 september 2026