для динамической формы, в которую можно добавлять и изменять поля:
сообщить
<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
Необходимо изменить форму и проверку контроллера
Сообщить
{!! 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'));
}
Вот хакерский способ сделать это. К сожалению, в настоящее время 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',