LARAVEL 5.3 - 忽略验证器自定义消息

LARAVEL 5.3 - Validator custom messages ignored

我登录post方法:

$validator = Validator::make(
    $request->all(), 
    [
        'user' => 'required',
        'password' => 'required'
    ],[
        'user' => 'Username is required',
        'password' => 'Password is required'
    ]
);

但是除非我将 'password' => 'Password is required' 更改为 'password.required' => 'Password is required',否则自定义消息将被忽略并默认发送到视图。

我真的必须在消息中指定规则还是我做错了什么?

Do I really have to specify the rule in the message or am I doing something wrong?

'required' 规则已有默认消息。你可以简单地离开它。所以这会起作用:

$validator = Validator::make(
    $request->all(), 
    [
        'user' => 'required',
        'password' => 'required'
    ]
);

https://laravel.com/docs/5.3/validation#working-with-error-messages

Laravel 首先查看自定义消息,如果找不到,则回退到正常验证消息。

'password' => 'Password is required' 不是您设置的必需验证。所以默认消息正在工作。您必须针对特定错误类型编写自定义消息。

示例:密码是必需的,并且也应该是整数然后

$validator = \Validator::make(
        $request->all(), 
        [
            'password' => 'required|integer'
        ],[
            'password.integer' => 'Password needs to be interger',
            'password.required' => 'Password is required'
        ]
);

注意:您还可以在 validation.php 文件中设置自定义消息,并将消息添加到自定义数组中。届时您将能够在全球范围内使用您的自定义消息。

'custom' => [
    'attribute-name' => [
        'rule-name' => 'custom-message',
    ],
]

我的想法是在 lang 文件夹中为特定语言(如 EN、ES)创建新的请求文件,并将其用于为指定表单创建的请求模型。