在 Lumen 中验证数据中的密钥

Validating the key in the data in Lumen

我正在验证如下所示的请求:

 {
  "data": [
    {
      "id": 1,
      "name": "Foo",     
      "values":{
        "val1":"This",
        "99":"That"
      }
    }
  ]
}

这是我的自定义消息:

$messages = [
     'data.id'=>'is required',
     'data.name'=>'is required',
     'data.values'=>'must be array',
     'data.values.*'=>'must be numeric'
];

我的验证规则是这样的:

$this->validate(
            $request,
            [
                'data'=>'required|array',
                'data.*.id'=>'required|numeric',
                'data.*.name'=>'required',
                'data.*.values'=>'array',
                'data.*.values.*'=>'numeric'
             ],
            $messages
        );

该规则验证 "values" 数组中的值。我想验证 "values" 数组 [val1, 99] 中的密钥。

data.*.values 编写自定义验证规则:

'data.*.values' => function($attribute, $value, $fail) {
    //$value contains your array of $key => $value pairs for you to loop through
    if( /* doesn't pass your rules */){
        return $fail('custom validation failed');
    }
},