laravel验证中的循环

时间:2017-03-27 12:00:07

标签: php laravel

我怎么能做出类似的东西

    for($x=0; $x<=14; $x++) {
        $this->validate($request, [
            'name' => 'required',
            'radio_'.$x => 'required',
        ]);
    }

但是我只需要从radio_循环而不是名字。像这样,但错了

            $this->validate($request, [
            'name' => 'required',
            for($x=0; $x<=14; $x++) {
            'radio_'.$x => 'required',
            }
        ]);

我的刀片文件,如果有帮助的话。

        @for($x = 0; $x <= 14; $x++)
        <div class="form-group">
            <label for="radio">
                <li>@lang('leadersCompetence.questions.'.$x)</li>
            </label><br>
            @for($i = 0; $i <= 4; $i++)
                <label class="radio-inline">
                    <input type="radio" name="radio_{{$x}}" @if(old('radio_'.$x) == $option[$i]) checked
                           @endif value="{{$option[$i]}}" required>
                    {{$option[$i]}}
                </label>
            @endfor
        </div>
    @endfor

6 个答案:

答案 0 :(得分:5)

您可以通过创建验证数组::

来完成此操作
$validate_array = ['name' => 'required'];
 for($x=0; $x<=14; $x++) {
     $validate_array['radio_'. $x] = 'required';
 }
$this->validate($request, $validate_array );

答案 1 :(得分:2)

您可以将值放入 radios 数组中,然后使用

'radios.*' => 'required'

在您的控制器中。

答案 2 :(得分:0)

我会做的是建立一个规则数组并在验证器中使用它。例如:

$rules["name"] = "required";
for($x=0; $x<=14; $x++) {
   $rules['radio_'.$x] = 'required',
}
$this->validate($request, $rules);

答案 3 :(得分:0)

不知道laravel但你可以验证两次,然后结合结果。或者您可以在传递验证之前创建该数组,如下所示:

$validationArray['name']= 'required';
for($x=0; $x<=14; $x++) { 
    $validationArray['radio_'.$x] => 'required', 
} 
$this->validate($request, $validationArray);

答案 4 :(得分:0)

如您所见,验证参数是一个数组。因此,您可以为无线电创建自定义数组,并将其与其他字段合并:

$ar = array();
for ($x = 0; $x <= 14; $x++) {
    array_push($ar, ['radio_' . $x => 'required']);
}
$validator = array_merge($ar, ['name' => 'required']);
$this->validate($request, $validator);

答案 5 :(得分:0)

不需要循环。你可以在下面验证数组

$this->validate($request, [
     'name' => 'required',
     'radio.* => 'required', // change to "radio_.*" if name is radio_
]);