Skip to main content

Wat is Precognition

Precognition is een mechanisme om server-side validatie uit te voeren vóórdat een formulier wordt verstuurd. Je kunt de validatieregels van Laravel direct gebruiken, zonder ze dubbel te definiëren in de frontend. Anders dan bij een gewoon request worden bij een Precognition-request de middleware van de route en de validatie van de form request wel uitgevoerd, maar de controllermethode zelf niet. Daardoor is het geschikt voor realtime validatie tijdens het typen.

Installatie

In Laravel 13 hoef je aan de backend-kant laravel/precognition niet extra te installeren. Wat je nodig hebt zijn de helperpakketten voor de frontend.
  • Vue: laravel-precognition-vue
  • React: laravel-precognition-react
  • Alpine.js: laravel-precognition-alpine
Inertia heeft vanaf 2.3 ingebouwde ondersteuning voor Precognition. Ook in Inertia 3 kun je het direct gebruiken. Gebruik je Inertia-formulieren, dan is het extra installeren van laravel-precognition-vue / laravel-precognition-react meestal niet nodig.

Backendconfiguratie

Voeg de HandlePrecognitiveRequests-middleware toe aan de route. Het is praktisch om de validatieregels te bundelen in een form request. Door ze in een form request onder te brengen, zijn hergebruik van regels en scheiding van verantwoordelijkheden makkelijker.
Heb je eigen middleware met bijwerkingen, sla die dan over tijdens Precognition.

Frontendintegratie

Alpine.js (Blade)

Vue (Inertia.js)

React (Inertia.js)

Vanilla JS met Axios

De Precognition-bibliotheek gebruikt Axios. Wil je een bestaande Axios-instantie gebruiken, dan vervang je die met client.use().

De timing van validatie sturen

Voor validatie per invoer gebruik je validate().
De debounce-tijd stel je bij met setValidationTimeout().
Wil je ook bestanden telkens valideren, gebruik dan validateFiles().
Array-invoer valideer je met een wildcard.

De formulierhelper

Met useForm() beheer je de verzend- en foutstatus in één geheel.
  • validating: er loopt een validatierequest
  • processing: bezig met verzenden
  • errors: lijst met fouten
  • valid('field') / invalid('field'): validatiestatus van een veld
  • submit(): gewone verzending

Vergelijking van gewone requests en Precognition-requests

Het onderstaande diagram toont het verschil in verwerking tussen een gewoon request en een Precognition-request.
Laatst gewijzigd op 6 september 2026