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 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题