Динамические поля формы не должны иметь одинаковое значение в Laravel - PullRequest
0 голосов
/ 29 июня 2018

Я реализую форму с динамическими полями, добавляемыми кнопкой добавления поля. Мне нужно, чтобы некоторые из этих полей имели одинаковое значение перед отправкой.

В настоящее время мои правила запроса выглядят так:

public function rules()
{
    return [
        'myfield.*.domain' => 'required|url',
        'myfield.*.group' => 'required',
        'myfield.*.client' => 'nullable'
    ];
}

Например, что если вы хотите, чтобы входные данные домена были уникальными при отправке формы (а не базы данных)? Это возможно?

Любая помощь будет очень признательна!

Спасибо!

EDIT

Добавление «отдельного» правила сделало работу для определенного поля.

'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 голосов
/ 29 июня 2018

У вас есть два способа добиться того, что вы просите:

Сначала, и проще, используйте после проверки в запросе формы:

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

Второй и более пригодный для повторного использования способ - создать собственное пользовательское правило, здесь - это официальные документы для этого.

...