
سلام دوستان.
من میخوام برای هر محصول به عنوان گالری، عکس هایی رو اضافه کنم.
کدهای مربوط به بلید:
<x-panel-layout>
<x-slot name="scripts">
<script>
let createNewPic = ({ id }) => {
return `
<div class="row image-field" id="image-${id}">
<div class="col-5">
<div class="form-group">
<label>تصویر</label>
<div class="input-group">
<div class="input-group-append">
<input type="file" class="form-control" name="images[${id}][image]">
</div>
</div>
</div>
</div>
<div class="col-2">
<label >اقدامات</label>
<div>
<button type="button" class="btn btn-sm btn-warning" onclick="document.getElementById('image-${id}').remove()">حذف</button>
</div>
</div>
</div>
`
}
$('#add_product_image').click(function() {
let imagesSection = $('#images_section');
let id = imagesSection.children().length;
imagesSection.append(
createNewPic({
id
})
);
});
$('#add_product_image').click();
</script>
</x-slot>
<div class="content-wrapper">
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-header">
<h3 class="card-title">ثبت تصویر</h3>
</div>
<!-- /.card-header -->
<!-- form start -->
<form class="form-horizontal" action="{{ route('products.gallery.store' , ['product' => $product->id]) }}" method="POST" enctype="multipart/form-data">
@csrf
<div class="card-body">
<div id="images_section">
</div>
<button class="btn btn-sm btn-danger" type="button" id="add_product_image">تصویر جدید</button>
</div>
<!-- /.card-body -->
<div class="card-footer">
<button type="submit" class="btn btn-info">ثبت تصاویر</button>
<a href="https://roocket.ir/{{ route('products.gallery.index' , ['product' => $product->id]) }}" class="btn btn-default float-left">لغو</a>
</div>
<!-- /.card-footer -->
</form>
</div>
</div>
</div>
</div>
</x-panel-layout>
کنترلر مربوطه:
public function store(Request $request, Product $product)
{
$validated = $request->validate([
'images.*.image' => 'required',
]);
$image = $this->UploadGallery();
$data = array_merge($validated, compact('image'));
$product->gallery()->create($data);
return redirect()->route('products.gallery.index' , ['product' => $product->id]);
}
متد مربوط به آپلود عکس:
protected function UploadGallery($image = []) {
$path = 'images/gallery';
if (request()->has('images')) {
$files = request()->file('images');
foreach ($files as $file)
$image[] = $file->store($path, 'public_files');
}
return $image;
}
اما با ارور زیر مواجه میشم:
Call to a member function store() on array
ممنون میشم راهنمایی بفرمایید
به Armin Rahmati کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.