Проверка локализации с массивами ввода в laravel 5?

для динамической формы, в которую можно добавлять и изменять поля:

сообщить

<input name="gallery[1][title]">
<input name="gallery[1][text]">
.
.
.
<input name="gallery[n][title]">
<input name="gallery[n][text]">

в контроллере для проверки:

'gallery.*.file' => 'nullable|image',
'gallery.*.title' => 'nullable|string',

в файле локализации:

Я никогда не знаю, сколько будет в массиве.

'gallery.*.text' =>  'text of gallery 1',
'gallery.*.title' =>  'title of gallery 1',

как я могу написать это?

Я хочу что-то подобное в результатах:

название галереи 1

.

.

.

название галереи n

2

Решение

Необходимо изменить форму и проверку контроллера

Сообщить

 {!! Form::open(['url' => 'actionURL']) !!}
{{ csrf_field() }}
<input name="gallery[]">

{!! Form::close() !!}

В контроллере

  foreach ($request->gallery as $key => $gallery) {
$validator = Validator::make(array('gallery => $gallery),
array('gallery' => 'required'));
}
0

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

Вот хакерский способ сделать это. К сожалению, в настоящее время laravel не поддерживает добавление общих заменителей сообщений для определенных токенов, так что вот что вы можете сделать:

В контроллере:

$replacer = function ($message, $attribute) {
$index = array_get(explode(".",$attribute),1);
$message = str_replace(":index",$index,$message);
//You may need to do additional replacements here if there's more tokens
return $message;
}
$this->getValidationFactory()->replacer("nullable", $replacer);
$this->getValidationFactory()->replacer("string", $replacer);
$this->getValidationFactory()->replacer("image", $replacer);
$v = $this->getValidationFactory()->make($request->all(), $rules);
if ($v->fails()) {
$this->throwValidationException($request, $v); //Simulate the $this->validate() behaviour
}

Вы также можете добавить заменители в сервис-провайдере, чтобы они были доступны на всех маршрутах, но, к сожалению, вам нужно регистрировать их для каждого правила, для которого вы хотите, чтобы они были доступны.

В файле локализации:

'gallery.*.text' =>  'text of gallery :index',
'gallery.*.title' =>  'title of gallery :index',
0

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