У меня возникли проблемы с отображением в моей форме сообщений об ошибках проверки настраиваемых полей perr. Я был бы очень признателен за помощь в решении этой проблемы.
Я много использовал проверки Laravel и поэтому понимаю принципы, но проблема, с которой у меня сейчас проблема, заключается в отображении пользовательского сообщения для элемента html с именем, которое является массивом.
У меня есть «наборы» полей, которые реплицируются по нажатию кнопки. Каждый набор создается с использованием возрастающего значения индекса, которое отличает один набор от другого:
<div id="divSet1">
<input type='text'
class="form-control @error('form_fields[1][surname]') is-invalid @enderror"
id="form_fields_1_surname" name="form_fields[1][surname]" />
@error('form_fields[1][surname]')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
.
.
. more fields here
.
.
</div>
<div id="divSet2">
<input type='text'
class="form-control @error('form_fields[2][surname]') is-invalid @enderror"
id="form_fieldsuse Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Validation\ValidationException;
/**
* Application form request
*
* @category controllers
* @sub-category validation
*/
class FormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'form_fields.*.surname' => 'required',
];
}
/**
* Get the error messages for the defined validation rules
*
* @return array
*/
public function messages()
{
return [
'form_fields.*.surname.required' => 'Please supply a surname',
];
}
}
surname" name="form_fields[2][surname]" />
@error('form_fields[2][surname]')
<div class="alert alert-danger">{{ $message }}</div>
@enderror
.
.
. more fields here
.
.
</div>
Класс FormRequest:
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Validation\ValidationException;
/**
* Application form request
*
* @category controllers
* @sub-category validation
*/
class FormRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'form_fields.*.surname' => 'required',
];
}
/**
* Get the error messages for the defined validation rules
*
* @return array
*/
public function messages()
{
return [
'form_fields.*.surname.required' => 'Please supply a surname',
];
}
}
Когда я отправляю форму, я не вижу настраиваемых сообщений об ошибках для ошибочных полей фамилии. Поля даже не выделены красным.
Однако, если я добавлю общий баннер сообщения об ошибке проверки, указанный в документации Laravel (https://laravel.com/docs/6.x/validation#quick-displaying-the-validation-errors), сообщается об отсутствующих фамилиях:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Хотя это работает и действительно сообщает об отсутствующих фамилиях в верхней части страницы без пользовательских сообщений:
* Please supply a surname // <-- form_fields[1][surname]
* Please supply a surname // <-- form_fields[2][surname]
.. это не индивидуальные пользовательские ошибки, отображаемые под недопустимыми полями.
Любая помощь в решении этой проблемы будет оценена по достоинству. Заранее спасибо.