Skip to main content

Cos’è Livewire

Fino a poco tempo fa, per creare UI dinamiche in Laravel bisognava affiancare un framework JavaScript come Vue.js o React, oppure scrivere direttamente richieste AJAX. Livewire è il pacchetto per Laravel che risolve questo problema. Con solo PHP e Blade puoi costruire UI reattive. Validazione in tempo reale dei form, ricerca live, contatori e simili: funzioni che tradizionalmente richiedevano JavaScript possono essere implementate interamente in PHP.
Livewire 4 gira su Laravel 10 o superiore e PHP 8.1 o superiore. La versione più recente è Livewire 4.

Panoramica del funzionamento

Un componente Livewire è la combinazione di una classe PHP lato server e di un template Blade. Quando l’utente clicca un pulsante o compila un form, Livewire invia dietro le quinte una richiesta AJAX, esegue PHP e riflette nella pagina solo le parti modificate. Lo sviluppatore può scrivere solo in PHP senza preoccuparsi del meccanismo.

Installazione

Nella directory root dell’applicazione Laravel esegui il comando seguente.
Il rilevamento automatico dei pacchetti di Laravel è attivo, quindi non serve alcuna configurazione aggiuntiva.

Creazione del layout

Per usarlo come componente a pagina intera è necessario un file di layout. Puoi generarlo con il comando Artisan seguente.
Viene generato resources/views/layouts/app.blade.php.
@livewireStyles e @livewireScripts caricano automaticamente gli asset di Livewire e Alpine.js.

Il primo componente

Per generare un componente Livewire c’è un comando Artisan. Proviamo a creare un semplice contatore.
Il comando genera un componente single-file chiamato resources/views/components/⚡counter.blade.php.
Il ⚡ nel nome del file serve a identificare a colpo d’occhio un componente Livewire. Migliora la leggibilità nell’editor. Se non ti serve puoi disabilitarlo nelle impostazioni.
Modifica il file generato come segue.
Per incorporare il componente in un template Blade usa la normale sintassi dei componenti Blade.
Ogni clic aggiorna il conteggio senza ricaricare la pagina. wire:click è il meccanismo che, al posto del JavaScript, richiama un metodo PHP.

Proprietà e azioni

Proprietà — wire:model

Con la direttiva wire:model puoi effettuare il binding bidirezionale tra un elemento di input e una proprietà del componente.
Per impostazione predefinita wire:model si sincronizza con il server solo all’esecuzione di un’azione (invio del form, ecc.). Se vuoi sincronizzare a ogni input, aggiungi il modificatore .live.

Azioni — wire:click, wire:submit

wire:click associa un metodo all’evento click, wire:submit all’evento di invio del form.

Validazione in tempo reale

In Livewire 4 puoi definire regole di validazione direttamente sulle proprietà con l’attributo #[Validate].
Le proprietà con #[Validate] vengono validate automaticamente a ogni aggiornamento. Combinandolo con wire:model.live.blur si ottiene un’esperienza di validazione in tempo reale in cui il messaggio d’errore compare appena si perde il focus.
$this->validate() valida tutte le proprietà insieme al momento dell’invio del form. Il pattern raccomandato è usarlo in combinazione con la validazione automatica di #[Validate] a due livelli.

Hook di ciclo di vita

Un componente Livewire ha diversi hook di ciclo di vita.

mount() — inizializzazione

mount() si usa per inizializzare il componente. Sostituisce il costruttore.

updated() — elaborazione dopo la modifica di una proprietà

Se vuoi eseguire qualcosa dopo l’aggiornamento di una proprietà, usa updated(). Per restringere a una proprietà specifica, includila nel nome del metodo.
A ogni input il valore viene automaticamente convertito in minuscolo.

Integrazione con Laravel

Uso dei modelli Eloquent

Livewire può contenere direttamente modelli Eloquent nelle proprietà.

Form object

Puoi mantenere semplici i componenti estraendo i form complessi in un form object.
Usa il form object dal componente.

Conclusioni

Ecco un riepilogo dei casi d’uso in cui Livewire eccelle. Se sei un ingegnere Laravel con esperienza in Blade, con Livewire puoi iniziare da subito. Il suo punto di forza è realizzare UI interattive senza il costo di apprendimento di un framework JavaScript. Quando servono interazioni molto avanzate, in stile SPA, Inertia.js è più indicato, ma per usi come form, pannelli di amministrazione o tabelle dati Livewire spesso permette un’implementazione più semplice. Prova a partire da un piccolo componente.

Documentazione ufficiale di Livewire

Per tutte le funzionalità di Livewire (file upload, paginazione, testing, ecc.) consulta la documentazione ufficiale.
Ultima modifica il 13 luglio 2026