Laravel数组验证使值无效

时间:2019-03-18 12:31:49

标签: php laravel validation

我想验证Laravel中对象数组的值,该对象是我通过客户端的请求传递的(已编码)。

首先,我解码通过请求传递的值,然后进行验证以检查其是否为空。

这是我的代码

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<img src="https://upload.wikimedia.org/wikipedia/commons/f/f8/Windows_logo_-_2012_%28red%29.svg" alt="Microsoft" width="350" />

出乎意料的是,服务器未返回任何错误消息。当我返回$request->request->set('shopping_list', array_map(function ($arr) { return json_decode($arr); }, $request->shopping)); $validator = Validator::make($request->toArray(), [ 'shopping_list' => ['required'], 'shopping_list.*' => ['required'], 'shopping_list.*.store' => ['required'], 'shopping_list.*.item' => ['required'], 'shopping_list.*.quantity' => ['required'], 'shopping_list.*.brand' => ['required'], 'shopping_list.*.size' => ['required'], ]); if (count($validator->errors()) > 0) { return Response::json($validator->errors()->first(), 422); } $request->all()时,完成验证后,我得到的值如下

Nullified Response

如果我在验证之前将其返回,我将收到这样的响应

Response from the server

如何解决此问题并验证项目?

2 个答案:

答案 0 :(得分:1)

根据我的建议,当使用json_decode时,可以通过传递true作为第二个参数来强制将JSON字符串作为关联数组返回。您正在尝试运行为对象上的数组构建的验证标志。

注意:toArray不会将JSON转换为数组或对象,而只是将从对象($request->my_input)传递的所有属性转换为assoc数组。

答案 1 :(得分:0)

作为“不好的建议”。您可以在$request->toArray()之前调用Validator::make(...(并将数据保存在某个变量中)。