2016-07-12 14 views
1

Ich habe Schwierigkeiten herauszufinden, wie eine benutzerdefinierte Validierungsregel in Laravel 5.1 geschrieben wird. Ich habe die documentation gelesen, aber es scheint unvollständig. Wenn ich es überblicke, sehe ich einfach nicht, wo ich meine eigentliche Validierungslogik setzen soll, zB if (stristr($string, 'test')) { ... und so weiter.benutzerdefinierte Laravel-Validierungsregel Beispiel

Zum anderen ist es nicht zeigen, in welchem ​​Verfahren/Array sollte die Fehlermeldung defintions gehen:

"foo" => "Your input was invalid!", 

"accepted" => "The :attribute must be accepted.", 

// The rest of the validation error messages... 

Meine eigentliche Anwendungsfall etwas seltsam ist, so dass für diese Frage, lassen Sie uns das Beispiel verwenden von ein sicheres Passwort bestätigen. Ein sicheres Passwort muss mindestens 8 Zeichen lang sein und einen Groß- und Kleinbuchstaben, eine Zahl und ein Sonderzeichen enthalten.

Eigentlich ist das ein ziemlich großer Auftrag für ein Beispiel, also wie wäre es mit der Suche nach einer Nummer? Oder eine String-Funktion auf den Wert ausführen?

Wie würde man eine solche Validierungsregel erstellen?

+0

Haben Sie diese Links überprüft - https://laravel.com/docs/5.1/validation#custom-validation-rules? es ist einfacher, eine neue benutzerdefinierte Validierung hinzuzufügen – Jobayer

+0

@Jobayer Ich verband das buchstäblich in meiner Frage. – user151841

+0

Ich denke, wenn jemand mit etwas validieren will, das nicht in der Form ist, wird es damit zu kämpfen haben. Ich suche auch nach der Antwort. – ClearBoth

Antwort

-1

Wie in der document you've linked beschrieben, müssen Sie Ihre Validierungslogik innerhalb der boot Funktion eines ServiceProvider (z AppServiceProvider) setzen, indem die statische extend Methode.

Hier ist ein kurzes Beispiel (mit dem Beispiel in der Dokumentation verbunden).

<?php 

namespace App\Providers; 

use Validator; 
use Illuminate\Support\ServiceProvider; 

class AppServiceProvider extends ServiceProvider 
{ 
    public function boot() 
    { 
     Validator::extend('yourFunctionNameHere', function($attribute, $value, $parameters, $validator) { 
      return $value == 'yourTestValueHere'; //change the body as you need it 
     }); 
    } 
} 

Die Eingabe des Benutzers zu $value zugewiesen

+0

Das ist, was ich nicht verstehe-- wo teste ich tatsächlich den Wert? Wo gebe ich etwas wie 'if (strlen ($ string)) <12) {...'? – user151841

+0

Der Wert ist der Text/String, der vom Benutzer eingefügt wurde;) – manniL

+0

Haben Sie tatsächlich Ihre eigene benutzerdefinierte Validierung vorgenommen oder kopieren Sie nur aus der Dokumentation? Ihr Beispiel beantwortet die Frage nicht, die ich gestellt habe. – user151841