在Laravel中验证数组


Validating Array in Laravel

我需要验证我输入的数据,它说

htmlentities() expects parameter 1 to be string, array given (View: /var/www/mw/app/views/delivery-reports/edit.blade.php)
这是我的方法:
 public static $rules_imei = array(
        'imei'             => 'required|alpha_dash|min:2',
         );
我规则:

  public function __construct(
        DeliveryReport $delivery_report)
    {
        $this->deliveryReport = $delivery_report;
    }

this my controller validation:

 $data = Input::get('imei');
if($errors = $this->deliveryReport->isInvalidImei($data))
{
    return Redirect::back()->withInput()->withErrors($errors);
}

这是我的观点:

@for ($qty = 0; $qty < $item_quantity; $qty++)
<br>
{{Form::text('imei[]',$qty)}}
<br>
@endfor

更新答案 (旧答案请查看历史记录)

对此有未记录的核心支持(感谢Andreas Lutro的提示)。

$validator = Validator::make(Input::all(), []);
$validator->each('imei', ['required', 'alpha_dash', 'min:2']);

不需要扩展

进一步阅读

  • api文档

在视图上创建索引数组

@for ($qty = 0; $qty < $item_quantity; $qty++)
<br>
{{Form::text('imei['.$qty.']',$qty)}}
<br>
@endfor

遍历循环以验证每个

    $rules_imei = [];
    //make custom rule for each element of array
    foreach(Input::get('imei') as $k => $val){
       $rules_imei[$k] = 'required';
    }
    //to have custom message like '1st imei is required' 
    $niceNames = array(
        '0' => '1st imei',
        '1' => '2nd imei',
        '2' => '3rd imei',
        '3' => '4th imei'
    );      
    $v = Validator::make(Input::get('imei'), $rules_imei);
    $v->setAttributeNames($niceNames); 

    if ($v->fails())
    {
        return Redirect::back()->withErrors($v)->withInput();
    }

通过此验证,每个选项都是强制性的,您可以根据需要更改