Cos’è la validazione
La validazione consiste nel verificare che i dati inviati dall’utente soddisfino il formato e le condizioni attese. Laravel offre una funzionalità di validazione semplice e potente tramite il metodovalidate dell’oggetto request o tramite classi form request dedicate.
Validazione nel controller
Uso di $request->validate()
Chiamare $request->validate() all’interno del metodo del controller è il modo più semplice di validare.
Se la validazione fallisce, Laravel reindirizza automaticamente l’utente alla schermata precedente e salva gli errori in sessione.
Definisci le route.
validate passi un array con nome del campo come chiave e regole come valore.
Puoi separare le regole con il pipe | o indicarle come array.
Regole di validazione principali
| Regola | Descrizione |
|---|---|
required | Il valore deve esistere e non essere vuoto |
string | Deve essere una stringa |
email | Deve essere un’email valida |
min:valore | Lunghezza minima della stringa o valore minimo del numero |
max:valore | Lunghezza massima della stringa o valore massimo del numero |
unique:tabella | Il valore deve essere univoco nella tabella indicata |
nullable | Consente anche il valore null |
integer | Deve essere un intero |
boolean | Deve essere un valore booleano (true/false, 1/0, ecc.) |
date | Deve essere una data valida |
confirmed | Deve corrispondere al campo nomecampo_confirmation |
Puoi consultare tutte le regole disponibili nella documentazione ufficiale.
Uso dei dati validati
Il valore restituito davalidate è un array che contiene solo i dati che hanno superato la validazione.
Puoi usarli in modo sicuro come dati affidabili.
Visualizzazione degli errori in Blade
Se la validazione fallisce, Laravel rende automaticamente disponibile in tutte le viste la variabile$errors.
Se ne occupa il middleware ShareErrorsFromSession incluso nel gruppo web.
Mostrare tutti gli errori in un elenco
Mostrare gli errori per singolo campo
Con la direttiva@error puoi mostrare inline l’errore di un campo specifico.
Form request
Cosa sono le form request
Quando la logica di validazione diventa complessa, è utile estrarla in classi “form request”. Una form request è una classe request personalizzata che raccoglie in un’unica classe la logica di validazione e di autorizzazione.Creazione di una form request
Genera una classe form request con il comando Artisanmake:request.
app/Http/Requests/StorePostRequest.php.
Metodo rules()
Restituisce le regole di validazione come array. Stesso formato dell’array passato a validate del controller.
Metodo authorize()
Determina se l’utente è autorizzato a eseguire la richiesta.
Restituendo true l’autorizzazione è concessa; restituendo false viene restituita automaticamente una response 403.
Se vuoi consentire solo agli utenti autenticati puoi verificare con auth()->check().
Nel tutorial è sufficiente restituire true.
Iniezione nel controller
Basta indicare la form request come type hint del metodo del controller. La validazione viene eseguita prima che il controller venga chiamato, quindi non serve scriverla nel metodo.$request->validated() ottieni solo i dati validati.
Esempio pratico: creazione e salvataggio di un form di post
Il flusso completo dalla visualizzazione del form all’invio, validazione e salvataggio.Nei form Blade includi sempre la direttiva
@csrf. Senza il token CSRF Laravel restituisce l’errore 419.Prossimi passi
Richieste HTTP
Rivedi come ottenere i dati usando l’oggetto request.