2016-10-31 5 views
0

ich the laravel documentation lese, und es gibt einige Zweifel über die ValidierungWarum Laravel Validierung im Controller statt Eloquent-Modell definieren?

Wenn der Web-Server Web-Interface Desktop-Benutzer zur Verfügung stellt, und api-Schnittstelle für mobile Benutzer, gibt es ein Problem: Es wird Validierung zweimal in api Controller definieren und Web-Controller, es ist eine Duplizierung.

und wenn es ein anderer Co-Entwickler ist ein großes Projekt zu entwickeln, sollte er vorherige Entwickler definiert Validierung wissen, ist es nicht gut für die gemeinsame Entwicklung

ich denke, es sollte Validierungslogik in derselben Stelle definieren, Wie ActiveRecord in Rails

Antwort

1

Sie können eine Request-Datei im Requests-Ordner erstellen und diese Datei in Controller-Methode injizieren, und es wird die Anfrage automatisch validieren. Bitte lesen Sie weiter die Laravel Validierungsdokumentation here und Sie werden diese Methode aufwändig finden.

+0

danke, es tut mir leid für das Lesen sorgfältig – TangMonk

1

Sie können den Modellen eine Methode wie 'getValidator' hinzufügen, die Ihnen den Validator gibt, und dann in der Steuerung, die Sie nur fragen.

Ein Validator würde jedoch die meiste Zeit die Eingabe der (Benutzer-) Eingabe validieren wollen. Stellen Sie sich eine Eingabe vor, die auf mehrere Modelle oder komplexe Beziehungen angewendet werden muss. Es wäre seltsam zu sagen, dass die Validierung wirklich Teil des/one-Modells ist. Am Ende wird nur die Eingabe validiert, Sie brauchen sie also in Ihrem Controller.

Eine bessere Art der Abstraktion in Ihrem Fall könnte sein, den 'Web' Teil als auch eine App zu interpretieren, die mit Ihrer API verbindet. Und dann lassen Sie die API die einzige Möglichkeit sein, mit Ihrem Backend zu interagieren und somit die Validierung nur an einer Stelle (der API) zu haben.

Am Ende ist es an Ihnen, wie Sie es strukturieren.

Verwandte Themen