从Laravel验证中获取错误消息

ZZZ*_*ZZZ 11 php json laravel

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

if ($validator->fails()) {
     $error = $validator->messages()->toJson();
     .....
}
Run Code Online (Sandbox Code Playgroud)

这是我打印错误时的结果

{"name":["The name must be at least 5 characters."],"alamat":["The address must be at least 5 characters."]}
Run Code Online (Sandbox Code Playgroud)

在上面的例子中,我想得到第一个错误,即"名称必须至少为5个字符.".我怎样才能做到这一点?

rom*_*e 웃 17

试试这个:

if ($validator->fails()) {
   $error = $validator->errors()->first();
}
Run Code Online (Sandbox Code Playgroud)


Val*_*Shi 8

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

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

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

[
    'price'=>
        [ 
            0 => 'Price must be integer',
            1 => 'Price must be greater than 0'
        ]
    'password' => [
        [
            0 => 'Password is required'
        ]
    ]
    
]
Run Code Online (Sandbox Code Playgroud)

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

消息袋错误消息附加助手

your_laravel_project_dir/vendor/illuminate/support/MessageBag.php找到像一些有用的方法keyshashasAnyfirstallisEmpty等,你可以同时检查特定的验证错误和自定义HTTP响应消息的需要。

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


Jil*_*mas 2

在您的 ajax 请求中,当您收到 时data,请尝试data.name.

这将为您提供该字段的错误消息name

$.ajax({
        url: "/your-save-url",
        type: "post",
        data: serializedData,
        success: function(data) { alert(data.name)}
    });
Run Code Online (Sandbox Code Playgroud)

  • `$error = $validator->messages()->toJson();` 此语句表明您正在使用 `json` 响应。此外,“json”字段包含表单中字段的名称属性。在你的例子中,名称是“name”和“alamat”。 (2认同)