info@a-coding-project.de

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.

Laravel Entwickler gesucht?

Wir haben bereits viel Erfahrung im Umgang mit Laravel und VUE.js.
Nehmen Sie gerne unverbindlich Kontakt zu uns auf.

zum Angebot

Über uns

Stefan Wienströer

Wir entwickeln Webanwendungen mit viel Leidenschaft. Unser Wissen geben wir dabei gerne weiter. Mehr über a coding project

Auch interessant