Laravel Validation
Um User-Input zu validieren, bietet Laravel eine sehr einfache Lösung: Die validate
-Methode des $request
-Objekts.
Validation nutzen
Im Controller kann eine typische Validierung von User-Daten folgendermaßen aussehen:
public function anmelden(Request $request) { $request->validate([ 'email' => 'required|email', 'alter' => 'required|integer|max:99|min:18' ]); }
Hier überprüfen wir ganz einfach, ob das E-Mail-Feld auch wirklich eine E-Mail-Adresse enthält und das angegebene Alter eine Zahlenwert zwischen 18 und 99 ist. Man kann beliebig viele Regeln per '|' getrennt hintereinander anfügen.
Falls die Validierung fehlschlägt, wird der User automatisch zur vorherigen View zurückgeschickt.
Validierungsergebnisse anzeigen
Da wir dem User eine Change geben wollen, seine Eingaben zu korrigieren, werden wir die Ergebnisse der Validierung ausgeben.
Im Blade-Template haben wir im Fehlerfall ein gefülltes errors
-Objekt zur Verfügung, das bereits vorgefertigte Fehlermeldungen für jede mögliche Validierungsregel enthält.
@if ($errors->any()) @foreach ($errors->all() as $error) Fehler: {{ $error }}
@endforeach @endif
Validierungsergebnisse übersetzen
Standardmäßig erhalten wir die Ergebnisse der Validierung auf English. Die könnten wir natürlich einfach mit deutschen Strings überschreiben. Sinnvoller ist es aber meistens, sich hierfür einen neuen Ordner mit deutschen Texten anzulegen.
Wir gehen davon aus, dass in unserer config/app.php
die Sprache auf Deutsch gesetzt ist ('locale' => 'de'
) und die Fallback-Sprache auf Englisch ('fallback_locale' => 'en'
).
Jetzt kann einfach die Datei resources/lang/en/validation.php
nach resources/lang/de/validation.php
kopiert und darin die entsprechenden Strings für 'email'
und 'integer'
überschrieben werden
Validierung kann noch mehr
Per validate lassen sich auch komplexere Bedingungen validieren, wie zum Beispiel das Vorhandensein bestimmter Einträge in der Datenbank. Wenn zum Beispiel ein neuer User in die Datenbank eingetragen werden soll, kann man mit dieser Regel sicherstellen, dass noch kein anderer User mit derselben E-Mail-Adresse existiert.
$request->validate([ 'email' => 'required|email|unique:users' ]);
Das Beispiel setzt voraus, dass Eloquent ORM genutzt wird und die entsprechenden Tabellen bereits erzeugt wurden.
Du arbeitest in einer Agentur oder als Freelancer?
Dann wirf doch mal einen Blick auf unsere Software FeatValue.
Über uns
Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project