我想创建带有自定义验证错误消息的自定义验证规则。为此,我创建了一条规则:
$rule => [
'app_id' => 'isValidTag'
]
对于自定义消息:
$message => [
app_id.isValidTag => 'Not a Valid id'
];
之后我创建了服务提供商:
class CustomValidationServiceProvider extends ServiceProvider
{
public function boot() {
//parent::boot();
$this->app->validator->resolver(function($transator,$data,$rules,$messages){
return new CustomValidator($transator,$data,$rules,$messages);
});
}
}
我的自定义验证类是:
class CustomValidator extends Validator {
if(empty($parameters)) {
return true;
}
$conext = $parameters[0];
$tag = Tag::where('id', $value)->where('context', $conext)->get();
$flag = false;
if($tag->count() > 0) {
$flag = true;
}
return $flag;
}
一切正常,但问题是app_id.isValidTag
的自定义消息无法正常工作,即使所有其他消息都正常工作。
请建议我在这里或Laravel 5.2中遗漏的内容,显示消息有一些变化。任何想法都将不胜感激。
答案 0 :(得分:5)
以下是一个很棒的教程:http://itsolutionstuff.com/post/laravel-5-create-custom-validation-rule-exampleexample.html
我认为你做的是Laravel 4. *方式。这是在 Laravel 5.2 中完成的 在我的例子中,我正在制作注册授权表格,因此像AuthController.php这样的文件是预制的:
AuthController.php
Validator::make($data, [
...
// add your field for validation
'name_of_the_field' => 'validation_tag', // validation tag from validation.php
...
CustomAuthProvider.php //如果您没有使用Providers / AppServiceProvider.php制作自定义提供程序
public function boot() {
...
Validator::extend('validation_tag', function($attribute, $value, $parameters, $validator) {
// handle here your validation
if ( your_query ) {
return true;
}
return false;
});
validation.php
...
// add your validation tag and message to be displayed
'validation_tag' => 'The field :attribute isn't good',
...
file.blade.php //在页面末尾添加所有错误添加
@if (count($errors) > 0)
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif