使用Laravel,有没有一种方法可以对多个模型的数据在一个ajax调用上运行验证?

时间:2018-07-19 11:26:46

标签: json laravel laravel-validation

假设一个人同时通过JSON发布一个模型的多个数据集,则可以使用Eloquent的Model :: create()函数插入这些数据集。但是,就我而言,我还需要验证此数据。

验证器仅将Request对象作为输入,据我所知,我无法仅使用一个模型来创建新的Request实例。

假定这将是输入数据(JSON),索引是浏览器的值,供浏览器了解哪些数据属于某个项目(因为它们在创建时未分配唯一的ID)

[
    {
        "index" : 1,
        "name"  : "Item 1",
        "value" : "Some description"
    },
    {
        "index" : 2,
        "name"  : "Item 2",
        "value" : "Something to describe item 2"
    },
    (and so on)
]

根数组中的每个对象都需要通过同一验证器运行。它的规则在Model :: $ rules(公共静态数组)中定义。

是否可以对每个商品运行验证程序,并可能捕获每个商品的错误?

1 个答案:

答案 0 :(得分:2)

您可以利用Validator进行手动验证:

...
use Validator;
...
$validator = Validator::make(
    json_decode($data, true), // where $data contains your JSON data string
    [
        // List your rules here using wildcard syntax.
        '*.index' => 'required|integer',
        '*.name' => 'required|min:2',
        ...
    ],
    [
        // Array of messages for validation errors.
        ...
    ],
    [
        // Array of attribute titles for validation errors.
        ...
    ]
);

if ($validator->fails()) {
    // Validation failed.
    // $validator->errors() will return MessageBag with what went wrong.    
    ...
}

您可以阅读有关验证数组here的更多信息。