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


LARAVEL 5.3 - Validator custom messages ignored

我得到了我的login 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',否则将忽略自定义消息,并将默认消息发送给视图。

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

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

注意:你也可以在validate .php文件中设置自定义消息,并在自定义数组中添加消息。您将能够在全局范围内使用您的自定义消息。

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

我真的需要在消息中指定规则吗错了什么吗?

'required'规则已经有一个默认消息。你可以简单地忽略它。这就行了:

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

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

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