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.Het layoutbestand aanmaken
Gebruik je een component als volledige pagina, dan heb je een layoutbestand nodig. Dat genereer je met het volgende Artisan-commando.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.resources/views/components/⚡counter.blade.php.
Bewerk het gegenereerde bestand als volgt.
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.
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.
#[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.
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.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.).