Динамические поля формы не должны иметь одинаковое значение в Laravel
Я реализую форму с динамическими полями, добавляемыми кнопкой добавления поля. Мне нужно, чтобы некоторые из этих полей имели одинаковое значение перед отправкой.
В настоящее время мои правила запроса выглядят так:
public function rules()
{
return [
'myfield.*.domain' => 'required|url',
'myfield.*.group' => 'required',
'myfield.*.client' => 'nullable'
];
}
Например, что если вы хотите, чтобы входные данные домена были уникальными при отправке формы (а не базы данных)? Это возможно?
Любая помощь могла бы быть полезна!
Спасибо!
РЕДАКТИРОВАТЬ
Добавление "отдельного" правила сделало работу для определенного поля.
'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 ответ
У вас есть два способа достичь того, что вы просите:
Во-первых, и проще, используйте после проверки в запросе формы:
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');
}
}
}
Второй и более удобный способ - создать собственное правило, вот официальные документы для этого.