⚡Introduction à Livewire 4 — créer des UI réactives sans JavaScript
Comment construire une UI interactive sans écrire de JavaScript grâce à Livewire 4, package Laravel de première partie. De l’installation aux exemples concrets.
Pour construire une UI dynamique avec Laravel, il fallait auparavant combiner un framework JavaScript comme Vue.js ou React, ou écrire soi-même les requêtes AJAX.Livewire est le package Laravel qui résout ce problème. Il vous permet de construire des UI réactives uniquement en PHP et Blade. Validation de formulaires en temps réel, recherche en direct, compteurs — tout ce qui nécessitait autrefois du JavaScript se fait désormais en PHP.
Livewire 4 fonctionne avec Laravel 10 ou supérieur et PHP 8.1 ou supérieur. La dernière version en date est Livewire 4.
Un composant Livewire associe une classe PHP côté serveur et un template Blade. Quand l’utilisateur clique sur un bouton ou saisit dans un champ, Livewire envoie en coulisses une requête AJAX, exécute le code PHP, puis met à jour uniquement les parties modifiées de la page. Le développeur n’a pas à se soucier de ce mécanisme : tout s’écrit en PHP.
Une commande Artisan permet de générer un composant Livewire. Créons un compteur simple.
php artisan make:livewire Counter
Cette commande génère un composant à fichier unique : resources/views/components/⚡counter.blade.php.
Le ⚡ dans le nom de fichier permet d’identifier immédiatement un composant Livewire. Cela améliore la visibilité dans l’éditeur. Vous pouvez le désactiver dans la configuration si vous préférez.
Éditez le fichier généré comme suit.
<?phpuse Livewire\Component;new class extends Component { public int $count = 0; public function increment(): void { $this->count++; } public function decrement(): void { $this->count--; }};?><div> <h1>Compteur : {{ $count }}</h1> <button wire:click="increment">+1</button> <button wire:click="decrement">-1</button></div>
Pour intégrer ce composant dans un template Blade, utilisez la syntaxe classique des composants Blade.
<livewire:counter />
À chaque clic, le compteur se met à jour sans rechargement de page. wire:click appelle une méthode PHP à la place du JavaScript.
Par défaut, wire:model se synchronise avec le serveur uniquement quand une action est déclenchée (envoi de formulaire par exemple). Pour synchroniser à chaque saisie, ajoutez le modificateur .live.
Écriture
Comportement
wire:model
Synchronise à l’exécution d’une action (envoi de formulaire, etc.) — par défaut
Les propriétés annotées avec #[Validate] sont validées automatiquement à chaque mise à jour. Combiné avec wire:model.live.blur, cela procure une validation en temps réel où le message d’erreur apparaît dès la perte de focus.
$this->validate() valide toutes les propriétés en même temps lors de l’envoi. Le patron recommandé est d’utiliser en deux temps la validation automatique via #[Validate] et cet appel.
Récapitulatif des cas d’usage où Livewire brille particulièrement.
Cas d’usage
Ce que Livewire permet
Traitement de formulaire
Validation en temps réel, affichage des erreurs
Liste de données
Recherche live, tri, pagination
Compteurs et toggles
Mises à jour UI sans rechargement
Interfaces d’administration
Opérations CRUD directement liées à Eloquent
Formulaires en assistant
Gestion des étapes en PHP
Livewire est immédiatement accessible à tout ingénieur Laravel qui connaît Blade. Son plus grand atout est de permettre des UI interactives sans le coût d’apprentissage d’un framework JavaScript.Pour une interactivité poussée façon SPA, Inertia.js est mieux adapté ; mais pour des formulaires, un back-office ou un tableau de données, Livewire est souvent plus simple. Commencez par un petit composant pour vous faire une idée.
Documentation officielle Livewire
Consultez la documentation officielle pour toutes les fonctionnalités (upload de fichiers, pagination, tests, etc.).