#php #laravel #validation
#php #laravel #проверка
Вопрос:
Я попытался загрузить несколько изображений с помощью системы проверки, даже если я загружаю изображения типа jpeg, это выдает ошибку системы проверки. Изображения должны быть файлом типа: jpeg, jpg, png, gif, svg.
register.blade.php
<form method="POST" action="{{ route('register') }}" enctype="multipart/form-data">
@csrf
<div class="form-group" id="divim">
<label>photos<span class="text-hightlight">*</span></label>
<input class="form-control" type="file" name="images[]" value="{{ old('images') }}" multiple>
@error('images')
<span class="invalid-feedback" role="alert">
<strong>{{ $message }}</strong>
</span>
@enderror
</div>
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('Register') }}
</button>
</div>
</form>
RegisterController.php
protected function validator(array $data)
{
return Validator::make($data, [
'images' => ['bail','required','mimes:jpeg,jpg,png,gif,svg','max:2048']
]);
}
метод create / store
protected function create(array $data)
{
$dataim = array();
if($request->hasFile('images'))
{
foreach($request->file('images') as $file)
{
$namee = encrypt($file->getClientOriginalName()).'.'.$file->extension();
//$name = encrypt($namee).'.'.$file->extension();
$name = "profiles\".$jdate->format('F').$jdate->year."\".$namee;
$file->storeAs("public\profiles\".$jdate->format('F').$jdate->year, $namee);
//$Annonce->images = "annonces\".$jdate->format('F').$jdate->year."\".time().'.'.$image->extension();
array_push($dataim,$name);
}
}
$user->images=json_encode($dataim);
$imm =$user->images;
return User::create([
'images' => $imm
]);
}
Ответ №1:
Поскольку вы хотите проверить массив, вы должны структурировать свои правила по-другому:
return Validator::make($data, [
'images' => ['bail', 'required', 'array', 'min:1'],
'images.*' => ['bail', 'mimes:jpeg,jpg,png,gif,svg', 'max:2048'],
]);
Для получения дополнительной информации см. Документы по проверке массивов.