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
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.
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.
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.