我正在实现一个带有通过添加字段按钮添加动态字段的表单。我需要防止这些字段中的某些字段在提交前具有相同的值。
目前,我的请求规则如下:
public function rules()
{
return [
'myfield.*.domain' => 'required|url',
'myfield.*.group' => 'required',
'myfield.*.client' => 'nullable'
];
}
例如,如果希望域输入在表单提交(而不是数据库)中唯一,该怎么办?这可能吗?
任何帮助将不胜感激!
谢谢!
编辑
添加'distinct'规则完成了特定字段的工作。
'myfield.*.domain' => 'required|url|distinct'
有时有时不会显示验证错误。故意测试相同的输入错误,错误消息有时会按预期显示,有时$errors->all()
返回空数组。
@foreach ($errors->all() as $error)
<div class="card-panel red white-text alert">
<span>{{ $error }}</span>
</div>
@endforeach
答案 0 :(得分:0)
您可以通过两种方式实现自己的要求:
首先(也是更简单),在表单请求上使用after验证:
public function withValidator($validator){
$validator->after(function ($validator) {
$domain = $this->domain;
if($this->group == $domain || $this->client == $domain){
$validator->errors()->add('Domain', 'Domain must be unique in form');
}
}
}
第二种更可重用的方法是创建自己的自定义规则,here是实现此目的的官方文档。