Armin Rahmati
3 سال پیش توسط Armin Rahmati مطرح شد
0 پاسخ

آپلود چند تصویر برای محصول - گالری تصاویر

سلام دوستان.
من میخوام برای هر محصول به عنوان گالری، عکس هایی رو اضافه کنم.
کدهای مربوط به بلید:

<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 کمک کنید تا مشکل خودش را حل کند؛ این‌طور می‌توانیم با هم پیشرفت کنیم.

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام