Skip to main content

Wat is validatie

Validatie is het controleren of de gegevens die een gebruiker verstuurt voldoen aan het verwachte formaat en de gestelde voorwaarden. Laravel biedt een eenvoudige maar krachtige validatiefunctionaliteit via de validate methode van het request-object of via speciale form request-klassen.

Validatie in de controller

$request->validate() gebruiken

De eenvoudigste manier om te valideren is door $request->validate() aan te roepen in een controllermethode. Als de validatie mislukt, stuurt Laravel de gebruiker automatisch terug naar het vorige scherm en slaat het de foutinformatie op in de sessie. Definieer de routes.
Maak de controller.
Aan de validate methode geef je een array door met veldnamen als sleutels en regels als waarden. Regels kun je scheiden met een pipe | of opgeven als array.

Belangrijke validatieregels

Uitgebreide validatie van e-mailadressen

Aan de email regel kun je parameters toevoegen die de validatiemethode bepalen.
rfc valideert dat het formaat voldoet aan de RFC, en dns valideert dat het domein van het e-mailadres een geldig MX-record heeft. dns voert daadwerkelijk een DNS lookup uit, maar bepaalt niet of de individuele mailbox bestaat. Je kunt dezelfde validatie ook schrijven met de fluent Rule builder.
De dns validator voert daadwerkelijk een DNS lookup uit en controleert of het domein van het e-mailadres een geldig MX-record heeft. Hij bepaalt echter niet of de individuele mailbox bestaat. Om in tests niet afhankelijk te zijn van live DNS lookups, kun je de dns lookup faken met Validator::fakeDnsLookups. Andere opgegeven validaties, zoals rfc, worden gewoon uitgevoerd.
Zo kun je regels als de volgende testen terwijl je de bestaande validatieregels blijft gebruiken.
Voor de validatie van dns en spoof is de PHP-extensie intl vereist.

Arraysleutels valideren

De array_keys regel valideert dat de waarde een PHP-array is en dat alle sleutels voorkomen in de opgegeven lijst. Geef minimaal één sleutel op.
Als je rule-objecten gebruikt, kun je dit opgeven met de Rule::arrayKeys methode.
Alle beschikbare validatieregels vind je in de officiële documentatie.

Gevalideerde data gebruiken

De returnwaarde van de validate methode is een array die alleen de data bevat die de validatie heeft doorstaan. Je kunt deze veilig gebruiken als betrouwbare data.

Fouten weergeven in Blade-templates

Als de validatie mislukt, maakt Laravel de variabele $errors automatisch beschikbaar in alle views. De ShareErrorsFromSession middleware, die deel uitmaakt van de web middlewaregroep, zorgt hiervoor.

Alle fouten in een lijst weergeven

Fouten per veld weergeven

Met de @error directive kun je fouten voor een specifiek veld inline weergeven.
Met old('veldnaam') kun je de door de gebruiker ingevoerde waarde opnieuw in het formulier tonen nadat de validatie is mislukt.

Form requests

Wat is een form request

Wordt je validatielogica complexer, dan is het effectief om deze onder te brengen in een “form request”-klasse. Een form request is een aangepaste request-klasse die validatie- en autorisatielogica bundelt in één klasse.

Een form request maken

Genereer een form request-klasse met het make:request Artisan-commando.
Het bestand app/Http/Requests/StorePostRequest.php wordt gegenereerd.

De rules() methode

Geeft de validatieregels terug als array. Dit is hetzelfde formaat als de array die je doorgeeft aan de validate methode in de controller.

De authorize() methode

Bepaalt of de gebruiker gemachtigd is om dit request uit te voeren. Geef je true terug, dan is de autorisatie in orde; geef je false terug, dan wordt automatisch een 403-response teruggegeven. Wil je alleen geauthenticeerde gebruikers toestaan, dan kun je dat controleren met auth()->check(). In een tutorial volstaat het om true terug te geven.
Als de authorize methode false teruggeeft, wordt de controllermethode niet uitgevoerd en wordt er een 403 Forbidden-response teruggegeven.

Injecteren in de controller

Een form request gebruik je door hem simpelweg als type hint op te geven in de controllermethode. De validatie wordt uitgevoerd voordat de controller wordt aangeroepen, dus je hoeft geen validatiecode in de methode te schrijven.
Met $request->validated() haal je alleen de gevalideerde data op.

Complexiteit en lengte van wachtwoorden instellen

Met het Password rule-object kun je de complexiteit en de minimale en maximale lengte van wachtwoorden in één keer opgeven.
min() bepaalt het minimale aantal tekens, max() het maximale. Door max() op te geven kun je complexe wachtwoorden toestaan en tegelijk expliciet een bovengrens stellen voor opslag of integratie met externe diensten.

Praktijkvoorbeeld: een postformulier maken en opslaan

Dit is de complete flow van het weergeven van het formulier tot het versturen, valideren en opslaan.
1

Routes definiëren

2

Een form request maken

3

De controller implementeren

4

Een Blade-template maken

Neem in Blade-formulieren altijd de @csrf directive op. Zonder CSRF-token geeft Laravel een 419-fout terug.

Volgende stap

HTTP-requests

Blik terug op hoe je data ophaalt met het request-object.
Laatst gewijzigd op 6 september 2026