簡體   English   中英

Laravel表單數組驗證不起作用

[英]Laravel form array validation doesn't work

我在使用Laravel 5.1驗證數組時遇到麻煩。

HTML代碼:

{!! Form::label('information[1][color]', 'Color') !!}
{!! Form::select('information[1][color]', [null => 'Choose your color'] + $product->availableColors()->toArray() , null, ['id' => 'select-color0', 'data-id' => $product->id, 'class' => 'form-control', 'required' => 'required']) !!}

要測試數據是否正確傳遞:

dd($request->all):

"information" => array:1 [▼
    1 => array:1 [▼
      "color" => "2"
    ]
  ]

驗證碼:

public function store(Request $request)
    {
        $rules = [
            'information.*.color' => 'required'
        ];

        $validator = Validator::make(Input::all(), $rules);

        if($validator->fails()){
            dd('Validation fails');
            return Redirect::to('index')->withErrors($validator);
        } else {
            ..........

我一直從dd('Validation fails')結束頁面。 有人可以向我解釋我在這里缺少什么,為什么驗證不起作用? 我正在嘗試遵循本教程: https : //mattstauffer.com/blog/form-array-validation-in-laravel-5-2/

我也嘗試過:

$validator = Validator::make($request->all(), [
    'information' => 'required',
    'information.*.color' => 'required'
]);

但是驗證仍然失敗

還嘗試更改表單名稱:

{!! Form::select('information[][color]', [null => 'Choose your color'] + $product->availableColors()->toArray() , null, ['id' => 'select-color0', 'data-id' => $product->id, 'class' => 'form-control', 'required' => 'required']) !!}

但是還沒有運氣

解:

$rules = [
        'id' => 'required',
        'name' => 'required|string',
        'information' => 'required|array'
    ];

    foreach ($request->information as $key => $variant) {
        foreach($variant as $color){
            $rules['information.'.$key.'.color'] = 'required';
        }
    }

    $validator = Validator::make($request->all(), $rules);

從選擇名稱中刪除1

{!! Form::select('information[][color]', array_merge([null => 'Choose your color'],$product->availableColors()->toArray()) , null, ['id' => 'select-color0', 'data-id' => $product->id, 'class' => 'form-control', 'required' => 'required']) !!}

或將您的規則更改為

$rules = [
            'information.1.color' => 'required'
        ];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM