2016-03-02 134 views
0

如何使用自定义的请求验证,我有一个数组密钥请求如何使用自定义请求验证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); 

[编辑] [CODE增订] 显示错误:

Argument 1 passed to App\Http\Controllers\Controller::validate() must be an instance of Illuminate\Http\Request, array given,

+0

您收到了哪些错误? –

+0

验证不起作用,没有错误.....输入值自动裁减数据库字段长度,从验证没有错误.. – Khoerodin

+0

我只是更新代码..并得到错误 – Khoerodin

回答

0

它,因为我把验证内部循环,而不是使用*字符来验证一个数组

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

正确的代码,把确认循环前,并使用*字符进行数组验证:

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

Controller::validate()不是一个通用的验证方法,它验证请求。对于这种使用情况下,只需直接使用验证:

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