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-kantlaravel/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 deHandlePrecognitiveRequests-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.
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 metclient.use().
De timing van validatie sturen
Voor validatie per invoer gebruik jevalidate().
setValidationTimeout().
validateFiles().
De formulierhelper
MetuseForm() beheer je de verzend- en foutstatus in één geheel.
validating: er loopt een validatierequestprocessing: bezig met verzendenerrors: lijst met foutenvalid('field')/invalid('field'): validatiestatus van een veldsubmit(): gewone verzending