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

Php 添加自定义验证错误消息laravel,php,laravel,laravel-5,Php,Laravel,Laravel 5,我可以这样做来验证控制器上的某些内容 $this->validate($request,[ 'myinput'=>'regex:some pattern' ]); 这个的输出是这样的 $validate = Validator::make($request->all(), [ 'name'=>'required|max:120', 'email'=>'required|email|unique:users,email,'.$id, 'pas

我可以这样做来验证控制器上的某些内容

$this->validate($request,[
'myinput'=>'regex:some pattern'
]);
这个的输出是这样的

$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'
]);
myinput格式无效

我想要的是展示我自己的信息

只允许一些图案


如何在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方法自定义表单请求使用的错误消息


有许多技术可以自定义验证程序消息

在控制器内部进行验证 看起来是这样的

$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\u variable\u name]。[validator\u name]=>“自定义消息”

    第二种方法:使用InfyOm Laravel生成器 我最喜欢这种方法。它提供了用于生成控制器、模型、视图、API等的有用工具。 然而,创建并更新
    请求
    文件。其中请求文件使用的是
    illumb\Foundation\Http\FormRequest
    ,其中该类是从
    illumb\Http\Request
    扩展而来的

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

    public function rules() {
        return [
            'name' => 'required|unique:flights,name|max:20',
            'airline_id' => 'nullable|numeric|digits_between:1,10',
        ];
    }
    
    这个函数实际上返回验证器规则,并根据输入验证它们。 您可以根据需要覆盖Lightning\Foundation\Http\FormRequest中的函数消息,以自定义错误消息:

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


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

    @BOTJr。我想更好的方法是将自定义消息添加到语言文件中