我有一个包含不同字段数量的表单。有必要为此表单创建一个验证器,验证它们之间的所有字段都有不同的值。
<form method="POST" action="url/action">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
@for ($i = 0; $i < $num; $i++)
<div class='form-group'>
<label>
Property №{{ $i+1 }}:
<select name="property{{ $i }}">
@foreach($properties as $property)
<option value="{{ $property->id }}">{{ $property->name }}</option>
@endforeach
</select>
</label>
</div>
@endfor
<input type="submit" class="btn btn-primary" value="Добавить">
</form>
表单提交的结果是创建一个具有这些属性的表,因此它们必须完全不同。
也许验证器看起来如下。
Validator::make($data, [
'property1' => 'unique',
'property2' => 'unique',
...
]);
请帮助编写验证员。
答案 0 :(得分:0)
以下是此问题的解决方案。
protected function validatorForProperties(array $data)
{
$rules = [];
foreach ($data as $key1 => $value1) {
$rule = 'different:';
foreach ($data as $key2 => $value2) {
if ($key1 != $key2)
$rule = $rule . $key2 . ',';
}
$rules = array_merge($rules, [$key1 => $rule]);
}
return Validator::make($data, $rules);
}