Как добавить пользовательские сообщения проверки с правилами элементов массива при проверке массива в Laravel? - PullRequest
0 голосов
/ 23 октября 2018

У меня есть пользовательский код проверки:

$this->validate($request, [
    'array' => 'required|array|max:100',
    'array.*' => 'required|string|distinct|min:3'
], [
    'array.max' => 'Array can't have more :max items',
]);

Вот как я могу добавить обычное сообщение с правилом элементов массива?

Например: 'array.item.min' => 'Array items length can't be greater :min charackters'

Пример сообщения об ошибке проверки по умолчанию для элементов массива:

{
  message: "The given data was invalid."
}

errors: {
  array.3: ["The array.3 must be at least 3 characters."]
}

array.3: ["The array.3 must be at least 3 characters."]

0: "The array.3 must be at least 3 characters."
message: "The given data was invalid."

Как я могу заменить это сообщение проверки на одно сообщение для элементов массива?

1 Ответ

0 голосов
/ 23 октября 2018

Вы можете попробовать добавить пользовательские сообщения для каждого элемента при отправке формы.Вот пример кода

$customMessages['array.max'] = 'Array can't have more :max items';

foreach ($request->get('array') as $key => $value) {
    $customMessages['array.' . $key . '.min'] = 'Array items length can't be greater :min charackters';
}

$this->validate($request, [
    'array' => 'required|array|max:100',
    'array.*' => 'required|string|distinct|min:3'
], $customMessages);

Если вы хотите показать ошибку в своем представлении, вы можете сделать это:

@if ($errors->has('array.0'))
    {{ $errors->first('array.0') }}
@endif

Если у вас есть foreach в представлении

@if ($errors->has('array.'.$index))
    {{ $errors->first('array.'.$index) }}
@endif
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...