Skip to main content

Cos’è Precognition

Precognition è un meccanismo che esegue la validazione lato server prima dell’invio del form. Senza duplicare le regole di validazione nel frontend, puoi usare direttamente le regole di Laravel. A differenza delle richieste normali, in una richiesta Precognition vengono eseguiti middleware di route e validazione delle form request, ma non il corpo del metodo controller. Per questo è adatto alla validazione in tempo reale durante l’immissione.

Installazione

In Laravel 13 non è necessario installare laravel/precognition sul backend. Servono invece i pacchetti helper per il frontend.
  • Vue: laravel-precognition-vue
  • React: laravel-precognition-react
  • Alpine.js: laravel-precognition-alpine
Inertia integra il supporto a Precognition a partire dalla 2.3. Puoi usarlo così com’è anche con Inertia 3. Se usi i form Inertia, di norma non è necessaria l’installazione aggiuntiva di laravel-precognition-vue / laravel-precognition-react.

Configurazione del backend

Aggiungi il middleware HandlePrecognitiveRequests alla route. In pratica conviene raccogliere le regole di validazione in una form request. Raggruppandole nella form request ottieni riusabilità delle regole e migliore separazione delle responsabilità.
Se hai middleware personalizzati con effetti collaterali, saltali durante Precognition.

Integrazione con il frontend

Alpine.js (Blade)

Vue (Inertia.js)

React (Inertia.js)

JavaScript vanilla con Axios

Le librerie Precognition usano Axios. Per usare un’istanza Axios esistente, sostituiscila con client.use().

Controllo del timing di validazione

Per la validazione per singolo input usa validate().
Il tempo di debounce si regola con setValidationTimeout().
Se vuoi validare i file ogni volta usa validateFiles().
Gli input array possono essere validati con wildcard.

Helper per i form

useForm() consente di gestire in modo unificato lo stato di invio e di errore.
  • validating: durante una richiesta di validazione
  • processing: durante l’invio
  • errors: elenco degli errori
  • valid('field') / invalid('field'): stato di validazione del campo
  • submit(): invio normale

Confronto tra richiesta normale e Precognition

Il diagramma seguente mostra la differenza di elaborazione tra una richiesta normale e una richiesta Precognition.
Ultima modifica il 13 luglio 2026