0

我正在实现一个通过添加字段按钮添加动态字段的表单。我需要的是防止其中一些字段在提交之前具有相同的值。

目前我的请求规则如下所示:

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 
4

1 回答 1

0

您有两种方法可以实现您的要求:

首先,更简单的是,对表单请求使用后验证:

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');
     }
  }
}

第二种也是更可重用的方法是创建自己的自定义规则,这里是官方文档。

于 2018-06-29T11:55:06.330 回答