Qu’est-ce que Livewire ?
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.
Vue d’ensemble
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.Installation
Exécutez la commande suivante à la racine de votre application Laravel.Créer le fichier de layout
Pour utiliser un composant en tant que page complète, il faut un fichier de layout. Générez-le avec la commande Artisan suivante.resources/views/layouts/app.blade.php est créé.
@livewireStyles et @livewireScripts chargent automatiquement les assets de Livewire et Alpine.js.
Premier composant
Une commande Artisan permet de générer un composant Livewire. Créons un compteur simple.resources/views/components/⚡counter.blade.php.
Éditez le fichier généré comme suit.
wire:click appelle une méthode PHP à la place du JavaScript.
Propriétés et actions
Propriétés — wire:model
La directive wire:model réalise un binding bidirectionnel entre un champ et une propriété du composant.
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.
Actions — wire:click, wire:submit
wire:click associe une méthode à un événement de clic, wire:submit à un événement d’envoi de formulaire.
Validation en temps réel
Livewire 4 permet de définir directement les règles de validation sur les propriétés via l’attribut#[Validate].
#[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.Hooks de cycle de vie
Un composant Livewire dispose de plusieurs hooks de cycle de vie.mount() — initialisation
mount() s’utilise pour initialiser le composant. Il remplace le constructeur.
updated() — traitement après changement de propriété
Pour agir après le changement d’une propriété, utilisez updated(). Ciblez une propriété spécifique en incluant son nom dans le nom de la méthode.
Intégration avec Laravel
Utilisation des modèles Eloquent
Livewire peut conserver directement un modèle Eloquent en propriété.Objets Form
Pour un formulaire complexe, il est utile d’extraire la logique dans un objet Form afin de garder le composant simple.Conclusion
Récapitulatif des cas d’usage où Livewire brille particulièrement.
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.).