【问题标题】:Add a custom validation error message laravel添加自定义验证错误消息 laravel
【发布时间】:2017-05-30 06:20:06
【问题描述】:

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

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

这样的输出会是这样的

myinput 格式无效。

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

只允许某些模式

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

【问题讨论】:

标签: php laravel laravel-5


【解决方案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] => "Customized message"

    第二种方法:使用 InfyOm Laravel 生成器

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

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

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

    此函数实际上返回验证器规则并根据输入验证它们。 您可以覆盖 Illuminate\Foundation\Http\FormRequest 中的函数 messages 以根据需要自定义错误消息:

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



    尽管如此,您可以对生成的请求文件做很多事情,只需从您的项目中参考供应商文件夹 vendor/laravel/framework/src/Illuminate/Foundation/Http 中的文件。

    这是 Infyom github 链接InfyOmLabs - laravel-generator

    【讨论】:

      【解决方案2】:

      您可以将自定义验证消息添加到语言文件,例如 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-the-error-messages

      【讨论】:

      • @BOTJr。我想更好的方法是将自定义消息添加到文件的语言中。
      猜你喜欢
      • 2012-05-07
      • 1970-01-01
      • 2021-02-24
      • 1970-01-01
      • 2020-02-26
      • 2015-09-07
      • 1970-01-01
      • 2014-05-31
      • 2017-06-28
      相关资源
      最近更新 更多