Это мой код:
public function store(Request $request)
{
try {
$this->validate($request, [
'activity_licenses' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
]);
} catch (\ValidationException $e) {
return [false, $e->getMessage()];
}
.
.
.
Фактически activity_licenses - это массив. Это HTML:
<input type = "file" name = "activity_licenses[] />
<input type = "file" name = "activity_licenses[] />
Как я могу это подтвердить? И что еще более важно, как я могу определить причину отказа (сообщение об ошибке)? В настоящее время $e->getMessage() пуст в случае сбоя.
Возможный повторяющийся вопрос. Ссылка на решение






Пытаться:
$input_data = $request->all();
$validator = Validator::make(
$input_data, [
'image_file.*' => 'required|mimes:jpg,jpeg,png,bmp|max:20000'
],[
'image_file.*.required' => 'Please upload an image',
'image_file.*.mimes' => 'Only jpeg,png and bmp images are allowed',
'image_file.*.max' => 'Sorry! Maximum allowed size for an image is 20MB',
]
);
if ($validator->fails()) {
// Validation error..
}
Проверка массива описана в Документ Laravel, и в вашем случае она должна быть:
$this->validate($request, [
'activity_licenses.*' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:6144',
])
Используя $this->validate() в контроллере, сообщения об ошибках автоматически передаются вашим представлениям, и переменная $errors хранит их. Вы должны проверить: Работа с сообщениями об ошибках в Документ Laravel
Пример (взят из документа):
@if ($errors->any())
<div class = "alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
Вы можете выполнить проверку, вызвав валидатор вручную следующим образом:
$validator = Validator::make($request->all(), [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
My advice is that you should read the documentation.
Вы проверили: laravel.com/docs/5.6/validation#validating-arrays?