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

标签 php laravel laravel-5

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

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

这个的输出会是这样的

The myinput format is invalid.

我想表达的是我自己的想法

Only some pattern allowed

我如何在 Laravel 上实现这个?

最佳答案

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

在 Controller 内部验证

看起来像这样

$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'
]);

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

    第二种方法:使用 InfyOm Laravel Generator

    我最喜欢这种方法。它提供了有用的生成工具,例如 Controller、Models、Views、API 等。 然而,创建和更新 Request 文件。其中 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

    关于php - 添加自定义验证错误消息 laravel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41658980/

    相关文章:

    php - 导出表时如何创建新列。 Laravel maat网站/excel

    php - 使用 Beanstalkd 失败的 Laravel 队列

    laravel 播种机数组到字符串的转换

    php - 使用 paypal API REST 检查 laravel 5.2 中的 paymentID 和 PayID isset()

    mysql - Laravel Forge 无法通过 Socket 连接到 MySQL

    php - Laravel - 此路由不支持 POST 方法。支持的方法 : GET, HEAD

    php - 如何使用 PHP 和 MySQL 比较两个表

    php - Javascript 增加文本框的值+1

    php - 如何删除带有 "filter"键的memcached数据?

    php - MySQL选择很多表,每个表的结果都是它自己的键/值对