سلام دوستان.
من میخوام برای هر محصول به عنوان گالری، عکس هایی رو اضافه کنم.
کدهای مربوط به بلید:
<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="{{ 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 کمک کنید تا مشکل خودش را حل کند؛ اینطور میتوانیم با هم پیشرفت کنیم.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟