如何使用自定义请求验证laravel数组?

时间:2016-03-02 11:39:32

标签: php arrays validation laravel

如何使用数组键验证自定义请求,我的请求

$request = [
  'link_inc_characteristic_id' => $inc_char_id[$i],
  'value' => $value[$i],
  'created_by' => $created_by,
  'last_updated_by' => $last_updated_by,
];

$this->validate($request, [
   'value['.$i.']' => 'max:30'
]);

$linkIncCharacteristicValue = LinkIncCharacteristicValue::create($request);
return Response::json($linkIncCharacteristicValue);

[编辑] [更新代码] 显示错误:

  

参数1传递给App \ Http \ Controllers \ Controller :: validate()必须是Illuminate \ Http \ Request的实例,给定数组,

3 个答案:

答案 0 :(得分:2)

Controller::validate()不是通用验证方法,它会验证请求。对于此用例,只需直接使用验证器:

Validator::make($data, ['value' => 'max:30']);

答案 1 :(得分:1)

错误消息告诉您错误:

  

传递给App \ Http \ Controllers \ Controller :: validate()的参数1必须是Illuminate \ Http \ Request的实例,给定数组

所以将Request实例传递给validate()方法:

public function store(Request $request)
{
    $this->validate($request, [
        'value.*' => 'max:30',
    ]);
}

查看以下资源:

答案 2 :(得分:0)

因为我将验证置于循环内而不使用subscribe()字符来验证数组

*

正确的代码,在循环之前放置验证,并使用*字符进行数组验证:

...
for ($i=0; $i < $count ; $i++) {
   ...
   $this->validate($request, [
      'value['.$i.']' => 'max:30'
   ]);
   ...
   // save etc
}