2017-12-20 16 views
2

Ist es möglich, meine benutzerdefinierte Validierungsregel in einer Validierungsanforderungsdatei zu verwenden?Laravel 5.5 verwenden benutzerdefinierte Validierungsregel in Validierungsanforderungsdatei?

ich mag meine benutzerdefinierte Regel EmployeeMail hier genannt verwenden, ist der Code der Anforderungsdatei

class CoachRequest extends FormRequest 
{ 
    /** 
    * Determine if the user is authorized to make this request. 
    * 
    * @return bool 
    */ 
    public function authorize() 
    { 
     return true; 
    } 

/** 
* Get the validation rules that apply to the request. 
* 
* @return array 
*/ 
public function rules() 
{ 
    $rules = []; 

    if ($this->isMethod('post')) { 
     $rules = [ 
      'name' => 'required|string', 
      'email' => 'required|email|employeemail', <<<--- this 
      'till' => 'required|date_format:H:i|after:from', 
     ]; 
    } 

    //TODO fix this 
    //TODO add custom messages for every field 

    return $rules; 
} 
} 

es mir einen Fehler gibt, wenn ich versuche, es wie diese

Methode zu verwenden, [validateEmployeemail] ist nicht vorhanden.

Code von benutzerdefinierter Regel

namespace App\Rules; 

use Illuminate\Contracts\Validation\Rule; 

class EmployeeMail implements Rule 
{ 
/** 
* Create a new rule instance. 
* 
* @return void 
*/ 
public function __construct() 
{ 
    // 
} 

/** 
* Determine if the validation rule passes. 
* 
* @param string $attribute 
* @param mixed $value 
* @return bool 
*/ 
public function passes($attribute, $value) 
{ 
    // If mail is that of an employee and not a student pass it 
    return preg_match("/@test.nl$/", $value) === 1; 
} 

/** 
* Get the validation error message. 
* 
* @return string 
*/ 
public function message() 
{ 
    return 'Email is geen werknemers mail'; 
} 
} 

kann ich nur diese benutzerdefinierte Regel wie diese verwendet?

+3

Es scheint, Sie validieren String mit einem regulären Ausdruck, die gleiche Logik kann durch Regex Buit-in-Validierungsmethode erreicht werden. Hör zu. https://laravel.com/docs/5.5/validation#rule-regex Sie müssen keine eigene Validierungsregel erstellen. –

+3

Wenn Sie Ihre Validierung verwenden möchten, übergeben Sie sie in ein Array. so was. ''email' => ['erforderlich', 'email', neue employeeemail],' –

+3

@RutvijKothari Ah danke, ich werde stattdessen die regex Regel verwenden, ich habe es vergessen. Und auch danke, dass ich erwähnt habe, wie ich eine benutzerdefinierte Regel in der Anforderungsdatei verwenden würde –

Antwort

4

Rutvij Kothari beantwortet die Frage in den Kommentaren.

Es scheint, Sie validieren String mit einem regulären Ausdruck, die gleiche Logik kann durch Regex Buit-in-Validierungsmethode erreicht werden. Hör zu. laravel.com/docs/5.5/validation#rule-regex Sie müssen keine eigene Validierungsregel erstellen. - Rutvij Kothari

Wenn Sie Ihre Validierung verwenden möchten, übergeben Sie es in ein Array. so was. 'E-Mail' => ['erforderlich', 'E-Mail', neue Employee-Mail]