Salta al contenuto principale
Livewire

Livewire 3: Real-time Validation e User Experience

Scopri come implementare validazione in tempo reale con Livewire 3 per migliorare l'esperienza utente.

Giovanni D'Ippolito
3 min

Autore

Giovanni D'Ippolito

Pubblicato

05 November 2025

Tempo di lettura

3 minuti

Tags

#Livewire #Laravel #Validazione #UX

Introduzione alla Validazione Real-time

Livewire 3 offre potenti strumenti per validare i form in tempo reale, fornendo feedback immediato agli utenti mentre digitano.

Validazione Base

Ecco come implementare una validazione semplice:

<?php
namespace App\Livewire;

use Livewire\Component;

class ContactForm extends Component
{
    public $name = '';
    public $email = '';
    public $message = '';

    protected $rules = [
        'name' => 'required|min:3',
        'email' => 'required|email',
        'message' => 'required|min:10',
    ];

    public function updated($propertyName)
    {
        $this->validateOnly($propertyName);
    }

    public function submit()
    {
        $validated = $this->validate();

        // Salva i dati...

        session()->flash('message', 'Messaggio inviato con successo!');
        $this->reset();
    }

    public function render()
    {
        return view('livewire.contact-form');
    }
}
?>

Template Blade con Errori

Il template corrispondente con messaggi di errore:

<div>
    <form wire:submit="submit">
        <div class="mb-4">
            <label for="name">Nome</label>
            <input
                type="text"
                id="name"
                wire:model.live="name"
                class="@error('name') border-red-500 @enderror"
            >
            @error('name')
                <span class="text-red-500">{{ $message }}</span>
            @enderror
        </div>

        <div class="mb-4">
            <label for="email">Email</label>
            <input
                type="email"
                id="email"
                wire:model.live="email"
                class="@error('email') border-red-500 @enderror"
            >
            @error('email')
                <span class="text-red-500">{{ $message }}</span>
            @enderror
        </div>

        <div class="mb-4">
            <label for="message">Messaggio</label>
            <textarea
                id="message"
                wire:model.live="message"
                class="@error('message') border-red-500 @enderror"
            ></textarea>
            @error('message')
                <span class="text-red-500">{{ $message }}</span>
            @enderror
        </div>

        <button type="submit">Invia</button>
    </form>
</div>
In Livewire 3, wire:model.live sostituisce il vecchio wire:model.defer e wire:model.lazy.

Validazione Asincrona Personalizzata

Per validazioni più complesse che richiedono query al database:

<?php
use Illuminate\Validation\Rule;

class UserRegistration extends Component
{
    public $username = '';
    public $email = '';

    public function rules()
    {
        return [
            'username' => [
                'required',
                'min:3',
                'max:20',
                'alpha_dash',
                Rule::unique('users', 'username'),
            ],
            'email' => [
                'required',
                'email',
                Rule::unique('users', 'email'),
            ],
        ];
    }

    public function messages()
    {
        return [
            'username.unique' => 'Questo username è già in uso.',
            'email.unique' => 'Questa email è già registrata.',
        ];
    }
}
?>
La validazione real-time migliora significativamente l'esperienza utente, riducendo gli errori di submission!

Condividi questo articolo

Articoli Correlati

Livewire

Livewire: Creare Componenti Riutilizzabili e Modulari

Best practices per creare componenti Livewire riutilizzabili che migliorano la manutenibilità del co...

13 Nov 2025 3 min
Leggi di più →
Livewire

Livewire: Paginazione e Infinite Scroll

Implementa paginazione classica e infinite scroll con Livewire.

29 Nov 2025 1 min
Leggi di più →

Rimani Aggiornato

Iscriviti alla nostra newsletter per ricevere gli ultimi articoli e novità direttamente nella tua casella di posta.