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

时间:2017-01-15 07:52:35

标签: php laravel laravel-5

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

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

并且这个的输出将是这样的

  

myinput格式无效。

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

  

只允许一些模式

我如何在laravel上实现这一目标?

2 个答案:

答案 0 :(得分:2)

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

另一种方法,从docs:

'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-the-error-messages

答案 1 :(得分:1)

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

在控制器内验证

看起来像这样

$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 Generator

    我最喜欢这种方法。它提供了有用的工具,用于生成 Controller,Models,Views,API等。 然而,创建并更新Request文件。其中请求文件正在使用Illuminate\Foundation\Http\FormRequest,其中此类从Illuminate\Http\Request扩展。

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

    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
        ];
    }
    



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

    这是Infyom github链接InfyOmLabs - laravel-generator