Пользовательское сообщение об ошибке в Laravel

Я проверяю массив в Laravel. я получил "0.id has already been taken." в сообщении об ошибке по умолчанию. Поэтому я добавил второй параметр в свой валидатор: 'unique' =>':attribute has already been taken. Please fix your data in spreadsheet.' и показывает "0.id has already been taken. Please fix your data in spreadsheet.", Я добавил третий параметр, который является пользовательским атрибутом. ['*.id' =>'Student ID'], Но я хочу получить такое сообщение: ID has already been taken. Please fix your data in spreadsheet in line 1.

Вот мой полный код проверки:

$validate = $request - > validate([
'*.id' => 'required|unique:students|numeric',
'*.rfid_number' => 'required|unique:students|numeric',
'*.first_name' => 'required|alpha|max:100',
'*.middle_name' => 'alpha|max:100|nullable',
'*.last_name' => 'required|string|max:100',
'*.name_extension' => 'alpha|max:10|nullable',
'*.email' => 'required|email|unique:students',
'*.photo' => 'string|nullable',
'*.house_number' => 'required|integer',
'*.barangay' => 'required|alpha|max:100',
'*.city' => 'required|alpha|max:100',
'*.province' => 'required|string|max:100',
'*.zip_code' => 'required|integer',
'*.birth_date' => 'required|date|max:100',
'*.birth_place' => 'string|max:200',
'*.gender' => 'required|alpha',
'*.religion' => 'alpha|max:100|nullable',
'*.landline_number' => 'numeric|max:20|nullable',
'*.mobile_number' => 'required',
'*.father_name' => 'string|max:200|required',
'*.father_occupation' => 'string|max:200|nullable',
'*.mother_name' => 'string|max:200|required',
'*.mother_occupation' => 'string|max:200|nullable',
'*.guardian_name' => 'string|max:200|required',
'*.guardian_occupation' => 'string|max:200|nullable',
'*.guardian_address' => 'string|max:200|nullable',
'*.year' => 'integer|max:10|required',
'*.section' => 'alpha|max:200|required'
], [
'unique' => ':attribute has already been taken. Please fix your data in spreadsheet.'
], [ //attributes
'*.id' => 'Student ID'
]);

0

Решение

Нечто подобное могло бы сработать:

$validate = $request->validate([
//
], [
//
],
collect($request->all())->keys()->flatMap(function ($index) {
return ["$index.id" => 'ID'];
})->toArray());

Итерируйте по всем индексам, чтобы вы получили что-то вроде:

[
'0.id' => 'ID',
'1.id' => 'ID',
'2.id' => 'ID',
'3.id' => 'ID',
'4.id' => 'ID',
'5.id' => 'ID',
'6.id' => 'ID',
'7.id' => 'ID',
]

Как ваш окончательный массив для валидатора

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]