Проверка массива Laravel: используйте индекс поля в сообщении об ошибкеPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Проверка массива Laravel: используйте индекс поля в сообщении об ошибке

Сообщение Anonymous »

Я пытаюсь проверить массив полей и хотел бы указать, какое поле неверно в ошибках проверки.

У меня есть форма для загрузить несколько изображений. Для каждого изображения должна быть подпись и атрибут alt для HTML. Если я попытаюсь загрузить три изображения и пропущу поля для двух из них, я получу следующее сообщение об ошибке:

Код: Выделить всё

The field 'image file' is required.
The field 'image caption' is required.
The field 'image alt' is required.
The field 'image caption' is required.
The field 'image alt' is required.
The field 'image file' is required.
Проблема в том, что :attribute повторяется, и если пользователь хочет обновить несколько изображений, ему/ей придется проверить их все, чтобы найти, какое поле отсутствует!

Мне нужно следующее:

Код: Выделить всё

The field 'image file (item 1)' is required.
The field 'image caption (item 1)' is required.
The field 'image alt (item 1)' is required.
The field 'image caption (item 3)' is required.
The field 'image alt (item 3)' is required.
The field 'image file (item 1)' is required.
Чтобы пользователь знал, где решить проблему.

Сначала я попробовал следующее:

Код: Выделить всё

$attributes = [
'img.*.file'    => 'Image file (item :* )',
'img.*.alt'     => 'Image alt (item :* )',
'img.*.caption' => 'Image caption (item :* )',
];
//
$this->validate($request, $rules, [], $attributes);
Я предполагал, что :* будет заменен индексом поля (1, 2, 3, 4 и т. д.) таким же образом: атрибут заменяется атрибутом. Однако :* не заменяется индексом полей; вместо этого он отображается в виде обычного текста.

Следует отметить, что я разработал код таким образом, чтобы атрибут имени HTML индексировался последовательно для всех полей (

Код: Выделить всё

img[1][alt]
, [img][2][alt] и т. д., img[1][caption], [img][2][caption] и т. д.), поэтому каждое поле имеет правильный индекс. Имея это в виду, я полагаю, что есть способ получить индекс и использовать его для создания пользовательских атрибутов в сообщениях об ошибках.

Я искал эту проблему и нашел то же самое вопрос здесь. Проверка полей с использованием позиции индекса, но она использует angular, а не laravel.

Как я могу получить индекс и поместить его в атрибут?Если это невозможно, есть ли другой способ добиться желаемого результата без необходимости настройки сообщений об ошибках?

Я бы хотел чтобы изменить атрибуты и сохранить сообщения об ошибках по умолчанию, предоставляемые laravel

Подробнее здесь: https://stackoverflow.com/questions/575 ... or-message
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»