Ein besserer Platz für die Validierungs-Regeln in Laravel | Arroba IT
Zum Inhalt springen
php laravel

Ein besserer Platz für die Validierungs-Regeln in Laravel

27. Okt 2017

Die Validierung in Laravel ist ziemlich einfach. Im Grunde gibt es zwei Möglichkeiten, wo eine eingehende Anfrage validiert werden kann:

  • in einer Controller-Action

  • in einem FormRequest

Validierung in der Controller-Action

Dies ist ein ziemlich einfacher, aber sehr leistungsfähiger Ansatz. Man bittet einfach die Anfrage, sich selbst auf der Grundlage der übergebenen Regeln zu validieren. Schlägt die Validierung fehl, erstellt die Methode eine entsprechende Fehlermeldung und sendet sie an das Frontend zurück. Wenn die Validierung erfolgreich ist, wird einfach mit dem restlichen Code innerhalb der Action fortgefahren.

Allerdings kann das sehr unübersichtlich werden, wenn ein langes Formular mit mehr als 10 Feldern validiert werden soll. Dann sollte man auf die andere Möglichkeit verwenden.

Validierung via Form Request

Zunächst erstellen wir den FormRequest mittels CLI und geben einen aussagekräftigen Namen:

$ php artisan make:request PostStoreRequest

Dann definieren wir die Regeln in rules() und übergeben das FormRequest Objekt an die Action. Jetzt können wir die validierten Daten aus "PostStoreRequest" abrufen. Ich verwende die Controller-Validierung für die schnelle Entwicklung, da ich so die Regeln in der Nähe des Codes habe und sie in dieser Phase schnell anpassen können muss, ohne mich mit mehreren Dateien herumschlagen zu müssen.

Im späteren Stadium verschiebe ich sie normalerweise in eine FormRequest-Klasse. Die Vorteile sind:

  • sauberere und kürzere Aktion

  • wenn die Validierung fehlschlägt, wird die Action nie ausgeführt

  • das FormRequest-Objekt hat einen eigenen Platz, um die Action zu autorisieren

Aber wo Licht ist, ist auch etwas Dunkelheit:

  • ein Form Request-Objekt für jede Action, die Benutzereingaben verarbeitet

  • Ihre Validierungsregeln sind in weiteren Dateien "versteckt"

Den ersten Punkt können wir nicht ändern, den zweiten jedoch schon.

Verschieben wir die Regeln in das Modell

Da wir versuchen, einen Blog-Post zu validieren und zu speichern, haben wir auch ein BlogPost-Modell. Gut! Verschieben Sie jetzt einfach die Regeln von dort, wo sie sich befinden, in das Modell und speichern sie in einer statischen Variablen:

Sie können sogar noch einen Schritt weiter gehen und zwei oder mehr Regeln miteinander kombinieren.