2016-06-20 24 views
0

Ich erweitere die Laravel Validierungsregeln, um eine Regel für "zwischen zwei benutzerdefinierten Feldern" zu erstellen - die between Regel behandelt nur "zwischen zwei Werten".Laravel Validation - benutzerdefinierte Regel, benutzerdefinierte Fehlermeldung

Validator::extend('between_fields', function($attribute, $value, $parameters, $validator) { 
    $data = $validator->getData(); 

    $min = array_get($data, $parameters[0], $parameters[0]); 
    $max = array_get($data, $parameters[1], $parameters[1]); 

    return $value >= $min && $value <= $max; 
}); 

Dies funktioniert gut, aber ich würde dann wie eine Fehlermeldung zu definieren, die die numerischen Werte verwendet. Ich habe eine Meldung wie diese ein:

'between_fields' => ':attribute must be between :min and :max.', 

... das ist, wie die bestehende between Regel funktioniert, aber die :min und :max nicht mit irgendetwas ersetzt bekommen.

Wie übermittele ich die Werte für diese von der Validator-Erweiterung bis zum Message-Handler?

Antwort

1

Sie müssen, dass mit der Validator::replacer()

Validator::replacer('between_fields', function($message, $attribute, $rule, $parameters){ return str_replace(...); //replace placeholders with the values you want });

+0

Ahh, ich wusste, ich muss etwas fehlen :) herausstellt, dass * ist * in der Dokumentation, es ist nur in nahe liegender Weise nicht genannt haha. Danke vielmals. Ich werde die Antwort in Kürze akzeptieren, sobald ich zu diesem Projekt zurückgesprungen bin und es getestet habe – Joe

+0

Sie sind willkommen –

Verwandte Themen