Skip to main content

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.
Grâce à la détection automatique des packages Laravel, aucune configuration supplémentaire n’est requise.

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.
Le fichier 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.
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.
Pour intégrer ce composant dans un template Blade, utilisez la syntaxe classique des composants Blade.
À chaque clic, le compteur se met à jour sans rechargement de page. 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.
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.

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].
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.

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.
Chaque saisie est automatiquement convertie en minuscules.

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.
Utilisation de cet objet Form depuis un composant.

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.).
Dernière modification le 13 juillet 2026