dongxiang3205 2015-10-21 14:09
浏览 106
已采纳

验证Laravel中的关联数组

I have a JSON structure like this which I want to validate.

{
  "result":[{

            "product_id": 1,
            "client": 49,
            "ticket": 2,
            "sold_from_date": 1431588871,
            "sold_to_date": 1433122200,
            "discount_given":18,
            "cheques":[{
              "cheque_number" : 123456,
              "amount": 6000,
              "cheque_date": 1433122200,
              "bank": "UCD"
            },
            {"cheque_number" : 456234,
              "amount": 6000,
              "cheque_date": 1433122200,
              "bank": "AMB"
            }
            ]
        },
          {

            "product_id": 1,
            "client": 49,
            "ticket": 2,
            "sold_from_date": 1433122200,
            "sold_to_date": 1434688959
        }]
}

I want to validate this JSON in Laravel.

I tried doing this:

$validator = \Validator::make($data, []);

        $validator->each('result.product_id' , ['required|numeric']);
        $validator->each('result.sold_from_date' , ['required|numeric']);
        $validator->each('result.sold_to_date' , ['required|numeric']);
        $validator->each('result.cheques.cheque_number' , ['sometimes|required|numeric']);
        $validator->each('result.cheques.amount', ['sometimes|required|numeric']);

        return $validator;

I am getting this error every time:

Attribute for each() must be an array.

Also, how can I validate cheques? Because it can or cannot be in JSON.

  • 写回答

1条回答 默认 最新

  • dql123000 2015-10-21 14:36
    关注

    Create an array from json with json_decode function.

    Try:

    $dataarray = json_decode($data);
    
    $validator = \Validator::make($dataarray['result'][0], [
        'product_id' => 'required|numeric',
        'sold_from_date' => 'required|numeric'
    ]);
    

    iterate the array:

    $roles = array(
        'product_id' => 'required|numeric',
        'sold_from_date' => 'required|numeric'
    );
    
    foreach($data as $element)
    {
        foreach($element as $value) {
            $validator = \Validator::make($value, $roles);
        }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程
  • ¥20 模型在y分布之外的数据上预测能力不好如何解决
  • ¥15 processing提取音乐节奏
  • ¥15 gg加速器加速游戏时,提示不是x86架构
  • ¥15 python按要求编写程序
  • ¥15 Python输入字符串转化为列表排序具体见图,严格按照输入
  • ¥20 XP系统在重新启动后进不去桌面,一直黑屏。
  • ¥15 opencv图像处理,需要四个处理结果图
  • ¥15 无线移动边缘计算系统中的系统模型