Skip to main content

Was ist Validierung

Validierung bedeutet, zu prüfen, ob vom Nutzer übermittelte Daten das erwartete Format und die Bedingungen erfüllen. Laravel bietet dafür die einfache, aber leistungsfähige validate-Methode am Request-Objekt sowie eigene Form-Request-Klassen.

Validierung im Controller

Nutzung von $request->validate()

Der einfachste Weg ist der Aufruf von $request->validate() im Controller. Schlägt die Validierung fehl, leitet Laravel automatisch zurück und speichert die Fehler in der Session. Routen:
Controller:
validate erwartet ein Array aus Feldname → Regel. Regeln trennen Sie per Pipe | oder in einem Array.

Wichtige Validierungsregeln

Alle Regeln finden Sie in der offiziellen Dokumentation.

Erweiterte E-Mail-Validierung

Die email-Regel akzeptiert Parameter, mit denen Sie festlegen, wie die Adresse validiert wird.
Der rfc-Validator prüft die Adresse gegen die unterstützten RFCs, während dns sicherstellt, dass die Domain der Adresse einen gültigen MX-Eintrag besitzt. Der dns-Validator führt einen echten DNS-Lookup aus, prüft aber nicht, ob ein einzelnes Postfach existiert. Dieselbe Validierung lässt sich auch mit dem fluent Rule-Builder formulieren.
Der dns-Validator führt einen echten DNS-Lookup aus und bestätigt so, dass die Domain der Adresse einen gültigen MX-Eintrag besitzt. Ob ein einzelnes Postfach existiert, prüft er jedoch nicht. Damit Ihre Tests nicht von echten DNS-Lookups abhängen, faken Sie den dns-Lookup mit Validator::fakeDnsLookups. Andere angeforderte Validierungen wie rfc werden weiterhin ausgeführt.
So kann Ihre Anwendung ihre bestehenden Validierungsregeln beibehalten, während Sie beispielsweise folgende Regel testen:
Die Validatoren dns und spoof benötigen die PHP-Extension intl.

Array-Schlüssel validieren

Die Regel array_keys prüft, ob der Zielwert ein PHP-Array ist und alle Schlüssel in der angegebenen Liste enthalten sind. Mindestens ein Schlüssel muss angegeben werden.
Bei der Verwendung von Rule-Objekten nutzen Sie die Methode Rule::arrayKeys.

Nutzung der validierten Daten

Der Rückgabewert von validate enthält ausschließlich die validierten Werte – vertrauenswürdig zur Weiterverarbeitung.

Fehleranzeige in Blade

Nach einer fehlgeschlagenen Validierung stellt Laravel automatisch die Variable $errors in allen Views zur Verfügung. Dafür sorgt die Middleware ShareErrorsFromSession aus der web-Gruppe.

Alle Fehler auflisten

Fehler pro Feld

Mit @error zeigen Sie inline Fehler eines bestimmten Feldes.
Mit old('feldname') behalten Sie den zuvor eingegebenen Wert im Formular auch nach einem Fehler.

Form Requests

Was sind Form Requests

Wenn die Validierungslogik komplexer wird, verlagern Sie sie in eine „Form-Request”-Klasse. Ein Form Request bündelt Validierungs- und Autorisierungslogik in einer eigenen Request-Klasse.

Form Request erzeugen

Mit make:request:
Erzeugt app/Http/Requests/StorePostRequest.php:

rules()

Gibt die Regeln als Array zurück – gleiches Format wie beim validate-Aufruf.

authorize()

Prüft, ob der Nutzer diese Aktion ausführen darf. true = erlaubt, false = automatisches 403 Forbidden. Wollen Sie nur angemeldete Nutzer zulassen, prüfen Sie mit auth()->check(). Für Tutorials reicht true.
Gibt authorize() false zurück, wird die Controller-Methode nicht ausgeführt und ein 403 zurückgegeben.

Injection im Controller

Deklarieren Sie den Form Request einfach als Parameter. Die Validierung läuft vor der Methodenausführung.
$request->validated() liefert nur die validierten Daten.

Passwortkomplexität und -länge festlegen

Mit dem Rule-Objekt Password legen Sie Passwortkomplexität sowie Mindest- und Höchstlänge gemeinsam fest.
min() gibt die Mindestlänge und max() die maximale Länge an. Durch Setzen von max() können Sie komplexe Passwörter erlauben und zugleich eine Obergrenze deklarieren, die von Ihrer Speicherlösung und der Anbindung an Drittanbieter-Dienste erwartet wird.

Praxisbeispiel: Post-Formular anlegen und speichern

Kompletter Ablauf: Formular anzeigen, absenden, validieren, speichern.
1

Routen definieren

2

Form Request erzeugen

3

Controller implementieren

4

Blade-Template anlegen

Vergessen Sie in Blade-Formularen nicht das @csrf-Directive – ohne CSRF-Token liefert Laravel Status 419.

Nächste Schritte

HTTP-Requests

Frischen Sie das Abrufen von Daten aus dem Request-Objekt auf.
Zuletzt geändert am 28. August 2026