从 Laravel 验证中获取错误消息

2022-08-30 16:53:07

我使用Laravel内置验证器,我想得到第一条错误消息

if ($validator->fails()) {
     $error = $validator->messages()->toJson();
     .....
}

这是我打印错误时的结果

{"name":["The name must be at least 5 characters."],"alamat":["The address must be at least 5 characters."]}

在上面的示例中,我想获取第一个错误,即“名称必须至少为5个字符”。我该怎么做?


答案 1

试试这个:

if ($validator->fails()) {
   $error = $validator->errors()->first();
}

答案 2

根据2019 Laravel 5.8及更高版本,从验证器获取所有错误消息就像这样简单:

// create the validator and make a validation here...
if ($validator->fails()) {
    $fieldsWithErrorMessagesArray = $validator->messages()->get('*');
}

您将获得字段名称和错误消息的数组数组。像这样:

[
    'price'=>
        [ 
            0 => 'Price must be integer',
            1 => 'Price must be greater than 0'
        ]
    'password' => [
        [
            0 => 'Password is required'
        ]
    ]
    
]

您可以使用类提供的其他验证消息 getter(它实际上是上面返回的对象类型)。Illuminate\Support\MessageBag$validator->messages()

消息袋错误消息 其他帮助程序

转到并找到一些有用的方法,如 、、、、等,在检查特定验证错误和自定义 HTTP 响应消息时可能需要这些方法。your_laravel_project_dir/vendor/illuminate/support/MessageBag.phpkeyshashasAnyfirstallisEmpty

通过查看源代码很容易理解它们的作用。以下是Laravel 5.8 API参考,尽管可能不如源代码有用。


推荐