클래스에 validator
속성을 만들고 app('validator')
으로 설정하면 맞춤법 검사 방법을 사용할 수 있습니다. 그러면 그 속성으로 extend
을 실행할 수 있습니다. 외관과 같습니다.
은
__construct
방법을 만들고이 추가
public function __construct() {
$this->validator = app('validator');
$this->validateFoobar($this->validator);
}
가 그럼 그냥 외관과 마찬가지로, 첫 번째 인수로
validator
재산을 그에
extend
을 실행
validateFoobar
라는 새로운 방법을 만들 수 있습니다.
public function validateFoobar($validator) {
$validator->extend('foobar', function($attribute, $value, $parameters) {
return ! MyModel::where('foobar', $value)->exists();
});
}
더 많은 세부 사항에 대한 extend
here 사용할 수 있습니다. 결국
, 당신의
FormRequest
는 다음과 같이 수 :
<?php namespace App\Http\Requests;
use App\Models\MyModel;
use App\Illuminate\Foundation\Http\FormRequest;
class MyFormRequest extends FormRequest {
public function __construct() {
$this->validator = app('validator');
$this->validateFoobar($this->validator);
}
public function rules() {
return [
'id' => ['required', 'foobar']
];
}
public function messages() {
return [
'id.required' => 'You have to have an ID.',
'id.foobar' => 'You have to set the foobar value.'
];
}
public function authorize() { return true; }
public function validateFoobar($validator) {
$validator->extend('foobar', function($attribute, $value, $parameters) {
return ! MyModel::where('category_id', $value)->exists();
});
}
}
어떻게이 작업을 수행하고 또한 새로운 검증 필터에 대한 사용자 지정 오류 메시지를 만들 것? –
@JimRubenstein : ' php에 복귀 [ '사용자 정의'=> [ 'ID'=> [ :이 같은'/ 자원/LANG/드/validation.php'에 사용자 정의 메시지를 넣을 수 있습니다 'foobar'=> '맞춤 메시지', ], ], ], ' – roNn23
@JimRubenstein, [메시지] (https://github.com/laravel/framework/blob/5.0/src)를 사용할 수 있습니다. /Illuminate/Foundation/Http/FormRequest.php#L213) 메소드를 FormRequest에 추가하십시오. 예를 들어 업데이트 된 답변을 참조하십시오. – Marwelln