添加自定义验证错误消息laravel



我可以做这样的事情来验证控制器上的一些东西。

$this->validate($request,[
'myinput'=>'regex:some pattern'
]);

它的输出将类似于

myinput格式无效。

我想要的是显示一些我自己的消息

只允许一些模式

我如何在laravel上实现这一点?

有许多技术可以自定义验证器消息。

在控制器内部验证

它看起来像这个

$validate = Validator::make($request->all(), [
'name'=>'required|max:120',
'email'=>'required|email|unique:users,email,'.$id,
'password'=>'nullable|min:6|confirmed'
], 
[
'name.required' => 'User name must not be empty!',
'name.max' => 'The maximun length of The User name must not exceed :max',
'name.regex' => 'Use name can not contain space',
'email.required' => 'Email must not be empty!',
'email.email' => 'Incorrect email address!',
'email.unique' => 'The email has already been used',
'password.min' => 'Password must contain at least 6 characters',
'password.confirmed' => 'Failed to confirm password'
]);

  • 第一个参数是要验证的输入
  • 第二个数组是验证器规则
  • 最后一个参数是自定义的验证器消息
  • 其中,synctax为[input_variable_name]。[validator_name]=>"自定义消息">

    第二步:使用InfyOm Laravel生成器

    我最喜欢这种方法。它为生成提供了有用的工具,如控制器、模型、视图、API等。但是,创建并更新Request文件。其中请求文件使用CCD_ 2,其中该类是从CCD_

    这意味着我们可以访问该文件中的请求,并对传入的请求执行验证
    这是我最感兴趣的部分。
    生成的请求文件包含规则函数,例如

    public function rules() {
    return [
    'name' => 'required|unique:flights,name|max:20',
    'airline_id' => 'nullable|numeric|digits_between:1,10',
    ];
    }
    

    这个函数实际上返回验证器规则,并根据输入对其进行验证。您可以覆盖Illuminate\Foundation\Http\FormRequest中的消息,根据需要自定义错误消息:

    public function messages()
    {
    return [
    'required' => "This field is required",
    \... etc
    ];
    }
    



    尽管如此,您可以对生成的请求文件执行许多nore操作,只需参考项目中供应商文件夹vendor/laravel/framework/src/Illuminate/Foundation/Http中的文件即可

    这是Infyom github链接InfyOmLabs-laravel生成器

    您可以将自定义验证消息添加到语言文件中,如resources/lang/en/validation.php

    另一种方法,来自文档:

    'custom' => [
    'email' => [
    'regex' => 'Please use your company email address to register. Webmail services are not permitted.'
    ],
    'lawyer_legal_fields' => [
    'number_of_areas' => 'You're not allowed to select so many practice areas'
    ],
    ],
    

    您可以通过重写messages方法来自定义表单请求所使用的错误消息。

    public function messages()
    {
    return [
    'title.required' => 'A title is required',
    'body.required'  => 'A message is required',
    ];
    }
    

    https://laravel.com/docs/5.3/validation#customizing-错误消息

    最新更新