Benutzerdefinierter Validator in Laravel 5

7

Ich aktualisiere meine Laravel-Anwendung von 4 auf 5. Allerdings habe ich einen benutzerdefinierten Validator, den ich nicht zur Arbeit bringen kann.

In L4 habe ich eine validators.php -Datei erstellt und diese in global.php mit require app_path().'/validators.php'; eingefügt.

Ich habe versucht, etwas Ähnliches in L5 zu machen. Ich habe einen Validator in app / Validators / Validators.php abgelegt und meine composer.json aktualisiert.

%Vor%

Aber jetzt wird auf keiner Seite mehr gerendert. Was habe ich falsch gemacht?

    
Maeh 09.02.2015, 19:45
quelle

2 Antworten

29

Versuchen Sie Folgendes:

  1. Erstellen Sie eine bind-Klasse, in der Sie jede Regel implementieren können, die Sie erweitern möchten Validator class.
  2. Machen Sie einen Dienstanbieter, der ServiceProvider erweitert.
  3. Fügen Sie Ihren benutzerdefinierten Validatoranbieter unter config/app.php file hinzu.

Sie können den Ordner bind in Services wie folgt erstellen:

%Vor%

Verwenden Sie dann einen Dienstanbieter, um den Kern zu erweitern:

%Vor%

Importieren Sie schließlich Ihren Serviceanbieter unter config/app.php like so:

%Vor%     
manix 10.02.2015, 06:04
quelle
4

Hier ist, was ich beim Hinzufügen einer benutzerdefinierten Validierung getan habe. Dies ist für Laravel 5.1

  1. run PHP Artisan make:request MyFormValidationRequest Datei wird unter app\Requests\MyFormValidationRequest.php erstellt

Hier ist der ursprüngliche Code:

%Vor%

WICHTIG : Ändern Sie den Rückgabewert von authorize() method in true, wenn Sie keine Authentifizierung durchführen. Der Anfangswert ist falsch. Andernfalls erhalten Sie eine weiße Seite mit einer Fehlermeldung "Verboten".

  1. Ich habe eine Regel unter der Funktion rules() hinzugefügt, so sieht es aus wie

    %Vor%

today_onwards ist meine neue Validierung.

  1. Ich habe einen Ordner namens "Dienste" im App-Ordner erstellt

  2. Ich habe eine Datei namens "ValidatorExtended.php" im App \ Services-Ordner erstellt, hier ist der folgende Code:

    %Vor%

Hinweis: In der validateTodayOnwards-Methode legen Sie Ihre Logik fest. Der Name der Methode sollte immer in "validate" beginnen und dann der Name des neuen Validierungsschlüssels, der im Titel sein sollte,

Eine weitere Anmerkung Ihr Validierungsschlüssel sollte durch Unterstreichung und alle Kleinbuchstaben getrennt sein, in diesem Fall "today_onwards". Der Unterstrich sollte vor allen ersten Großbuchstaben im Methodennamen stehen. Ich hoffe ich habe es gut erklärt.

Die TodayOnwards-Methode entspricht dem Validierungsnamen von "today_onwards",

Ein anderes Beispiel: Wenn ich validateOldPassword erstellt habe, sollte Ihr Validierungsschlüssel "old_password" sein.

  1. Ich habe den folgenden Code in app\Providers\AppServiceProvider.php in% boot() method hinzugefügt.

    %Vor%
  2. Vergessen Sie nicht, unterhalb der Bibliothek hinzuzufügen, eine ist die Validator-Klasse und die andere ist Ihre eigene Klasse, die " ValidatorExtended " ist.

    %Vor%
  3. Hier sehen Sie, wie die ganze Datei aussieht, [ app\Providers\AppServiceProvider.php ]

    %Vor%
  4. Das ist es. erledigt. Sie haben Ihre eigene benutzerdefinierte Validierung erstellt.

  5. Zusätzlich, wenn Sie es in Ihrem Controller verwenden möchten, ist unten der Code:

    %Vor%

Anstatt die Request-Klasse zu verwenden, verwenden Sie Ihre eigene Klasse, die eine Erweiterung der Request-Klasse ist.

    
Rabb-bit 19.12.2015 10:47
quelle

Tags und Links