Back

Débuter avec Laravel Livewire

Débuter avec Laravel Livewire

Si vous avez toujours voulu créer des interfaces réactives et dynamiques dans une application Laravel sans avoir recours à Vue, React ou une pile de JavaScript personnalisé, Laravel Livewire mérite votre attention. Il vous permet d’écrire des composants UI avec état entièrement en PHP et Blade, tandis que Livewire gère automatiquement les mises à jour côté navigateur.

Ce guide explique comment fonctionne Livewire, comment créer votre premier composant et à quoi ressemble l’expérience de développement moderne avec Livewire 4.

Points clés à retenir

  • Livewire vous permet de créer des interfaces utilisateur réactives et dynamiques dans Laravel en utilisant uniquement PHP et Blade — aucun framework JavaScript séparé n’est requis.
  • Les composants monofichiers regroupent votre logique PHP et votre template Blade dans un seul fichier, rationalisant ainsi le développement.
  • Livewire gère automatiquement la synchronisation de l’état entre le serveur et le navigateur via des requêtes AJAX légères et un patching DOM intelligent.
  • Alpine.js est livré en bundle avec Livewire pour les interactions côté client, tandis que Livewire gère tout ce qui nécessite une logique côté serveur.

Qu’est-ce que Laravel Livewire ?

Livewire est un framework full-stack pour Laravel qui rend la création d’interfaces utilisateur dynamiques aussi naturelle que l’écriture de PHP classique. Vous définissez une classe de composant avec des propriétés et méthodes publiques, vous l’associez à un template Blade, et Livewire se charge de synchroniser l’état entre le serveur et le navigateur en utilisant des requêtes AJAX légères en arrière-plan.

Pas de WebSockets. Pas d’API séparée. Pas de framework JavaScript à configurer.

Il s’intègre naturellement dans l’écosystème Laravel et fonctionne particulièrement bien pour :

  • La gestion de formulaires avec validation en temps réel
  • Les tableaux de bord avec des données en direct
  • Les widgets interactifs comme les filtres de recherche, les modales et les flux multi-étapes

Les applications Livewire modernes s’intègrent également de manière transparente avec les récents kits de démarrage Laravel construits autour de workflows basés sur Livewire, vous permettant ainsi d’obtenir une structure prête pour la production avec une configuration minimale.

Comment fonctionnent les composants réactifs Livewire

Lorsqu’un utilisateur interagit avec un composant Livewire — en cliquant sur un bouton, en tapant dans un champ — Livewire envoie une requête au serveur avec l’état actuel du composant. Le serveur traite l’action, met à jour l’état et renvoie un nouveau rendu. Livewire applique ensuite intelligemment un patch uniquement sur les parties modifiées du DOM.

Du point de vue du développeur, vous écrivez simplement des méthodes PHP et lisez des propriétés publiques. Le comportement réactif se produit automatiquement.

Créer votre premier composant monofichier Livewire

Les applications Livewire modernes utilisent couramment des composants monofichiers, où la classe PHP et le template Blade cohabitent dans un seul fichier .blade.php. Cela permet de regrouper la logique associée et constitue un pattern courant dans le Livewire moderne.

Voici un simple compteur pour illustrer l’idée de base :

<?php

use Livewire\Component;

new class extends Component {
    public int $count = 0;

    public function increment(): void
    {
        $this->count++;
    }

    public function decrement(): void
    {
        $this->count--;
    }
};

?>

<div>
    <button wire:click="decrement">-</button>
    <span>{{ $count }}</span>
    <button wire:click="increment">+</button>
</div>

Ce qui se passe ici :

  • public int $count est l’état réactif du composant
  • increment() et decrement() sont des méthodes côté serveur déclenchées depuis le navigateur
  • wire:click indique à Livewire quelle méthode appeler lorsque le bouton est cliqué
  • L’affichage de {{ $count }} se met à jour automatiquement après chaque interaction — sans rechargement de page

Note : Chaque composant Livewire doit avoir un seul élément HTML racine. Plusieurs éléments racines provoqueront une erreur.

Pour un exemple plus pratique, un formulaire de création d’article utiliserait wire:model pour la liaison de données bidirectionnelle et wire:submit pour gérer la soumission du formulaire avec validation intégrée — le tout sans écrire une seule ligne de JavaScript.

Quand utiliser Livewire plutôt qu’Alpine.js

Alpine.js est livré avec Livewire et gère les interactions légères, purement côté client — basculer un menu déroulant, afficher une infobulle. Livewire est le bon choix lorsque l’interaction nécessite une logique côté serveur : interroger une base de données, exécuter une validation, enregistrer des données ou gérer un état complexe.

Utilisez Alpine pour le polish de l’interface utilisateur. Utilisez Livewire pour les composants réactifs qui nécessitent votre backend Laravel.

Important : Si votre projet a déjà Alpine installé séparément, assurez-vous qu’il n’est pas chargé deux fois. Livewire intègre Alpine en interne, et des instances Alpine dupliquées peuvent causer des conflits.

Que explorer ensuite

Une fois que vous êtes à l’aise avec les bases, les domaines les plus utiles à explorer sont :

  • Les modificateurs wire:model.live pour les mises à jour en temps réel, .blur pour synchroniser à la perte de focus
  • wire:loading — Afficher des états de chargement pendant que le serveur traite une requête
  • La validation — Livewire s’intègre directement avec le validateur de Laravel
  • La communication entre composants — Utilisez dispatch() pour envoyer des événements entre composants

Conclusion

La véritable force de Livewire se révèle lorsque vous commencez à remplacer ce qui aurait été du JavaScript complexe par du PHP simple et direct. Il vous maintient dans les conventions de Laravel tout en offrant le type d’expérience réactive que les utilisateurs attendent des applications web modernes. Commencez par un formulaire interactif dans votre application Laravel existante, et le pattern deviendra immédiatement clair.

FAQ

Non. Livewire intègre Alpine en interne. Installer une copie séparée d'Alpine aux côtés de Livewire peut causer des conflits si Alpine est chargé deux fois. Si votre projet inclut déjà Alpine comme dépendance autonome, assurez-vous de ne pas le dupliquer lors de l'ajout de Livewire.

Oui, Livewire peut coexister avec Vue ou React. Vous pouvez utiliser Livewire pour les composants interactifs pilotés par le serveur et réserver Vue ou React pour les sections nécessitant un rendu côté client intensif. Ils fonctionnent indépendamment, il n'y a donc pas de conflits inhérents tant qu'ils ciblent différentes parties du DOM.

Chaque interaction Livewire envoie une requête serveur, similaire à un appel AJAX standard. Pour la plupart des cas d'usage, la surcharge est négligeable. Cependant, les composants avec des mises à jour très fréquentes, comme la saisie en temps réel dans de grands formulaires, peuvent bénéficier des modificateurs wire:model comme .blur ou .live pour réduire les allers-retours inutiles.

La compatibilité de Livewire dépend de la version que vous installez, consultez donc toujours la documentation officielle d'installation et de mise à niveau de Livewire avant de démarrer un nouveau projet. Pour les nouvelles applications, utilisez la documentation Livewire actuelle plutôt que de vous fier aux anciens tutoriels v2 ou v3.

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers. Check our GitHub repo and join the thousands of developers in our community.

OpenReplay