在使用 Laravel 表单验证时,有的时候我们需要验证动态生成(name)的字段,本文就介绍一下 Laravel 表单验证动态生成的字段的方法。
假设有如下表单代码,其中包含包含动态名称的 input。
@foreach($norms as $norm)
<tr>
<td class="d-none d-sm-table-cell text-nowrap">{{ $norm->title }}</td>
<td>{{ $norm->description }}</td>
<td>{{ $norm->score }}</td>
<td>
<input type="number"
id="norm-{{ $norm->id }}"
name="norm-{{ $norm->id }}"
class="form-control score @if ($errors->has('norm-' . $norm->id)) border border-danger text-danger @endif"
step="1"
min="0"
max="{{ $norm->score }}"
value = "{{ old('norm-'.$norm->id) }}">
</td>
</tr>
@endforeach
表单验证代码:
$inputs = $this->all();
$rules = [];
foreach ($inputs as $key => $input) {
if(str_contains($key,'norm-')){
$rules[$key] = 'required|integer|gte:0|lte:100;
}
}
return $rules;
说明:
通过前缀获得所有包含 norm- 字符串的动态名称 input,然后循环添加验证规则,最终返回规则数据即可。