动态表单字段在Laravel中不应具有相同的值

时间:2018-06-29 10:11:18

标签: laravel laravel-5.4 laravel-request laravel-form

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

目前,我的请求规则如下:

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 

1 个答案:

答案 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是实现此目的的官方文档。