محمود خسروی
5 سال پیش توسط محمود خسروی مطرح شد
3 پاسخ

چگونه تصویر را از خدمات بروزرسانی کنیم

من یه جدول دارم به نام services یا همین خدمات، حالا این جدول فیلدهای زیر را دارد

  • id
  • title
  • body
  • image
  • slug
  • timestamps

ودر مدیریت صفحه خدمات را ایجاد کردم برای مشاهده ی خدمات و ایجاد خدمات و ویرایش خدمات و حذف خدمات.

من فقط ویرایش و آپدیت تصویر مشکل دارم. یه مشکل عجیبی که من دارم اینه که وقتی در جدول services (دیتابیس) فیلد image را به ali تغییر میدهم هیچ اتفاقی که باید بیفته، نمی افته یا به قول معروف هیچ خطایی نمیده.

web.php

Route::resource('services', 'ServiceController');

ServiceController.php

public function edit(Service $service)
{
    return view('Admin.services.edit', compact('service'));
}

public function update(Request $request, Service $service)
{
    $service->title = $request->title;
    $service->body = $request->body;
    if($request->has('image')) {
        $image = $request->file('image');
        $filename = $image->getClientOriginalName();
        $image->move(public_path('images/services'), $filename);
        $service->image = $request->file('image')->getClientOriginalName();
    }
    $service->update();
    return redirect()->route('services.index');
}

edit.blade.php

<form class="form-horizontal" action="{{ route('services.update', $service->id) }}" method="post" enctype="multipart/form-data">
    {{ csrf_field() }}
    {{ method_field('PATCH') }}
    @include('Admin.layouts.errors')
    <div class="form-group">
        <label for="title">عنوان</label>
        <input type="text" class="form-control" id="title" name="title" placeholder="عنوان" value="{{ $service->title ? : old('title') }}">
    </div>
    <div class="form-group">
        <label for="body">متن</label>
        <textarea class="form-control" rows="۱۰" id="body" name="body" placeholder="متن">{{ $service->body ? : old('body') }}</textarea>
    </div>
    <div class="form-group">
        <label for="images">تصویر</label>
        <div class="custom-file">
            <input type="file" class="custom-file-input" id="images" name="images">
            <label class="custom-file-label" for="images">تصویر محصول</label>
        </div>
    </div>
    <div class="form-group">
        <button type="submit" class="btn btn-primary">ذخیره</button>
    </div>
</form>

من حتی توی کنترلر متد update کد زیر را نوشتم هیچ اتفاقی نیفتاد.

     $service->save();

حتی اگر در متد update این دستور را نوشته باشم dd($request->image) ، کلمه null را نشان میدهد.


ثبت پرسش جدید
Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش آپدیت شد
1

سلام
@oxbir

توی فرمتون اسم Inputi که دارید عکس میگیرید
images هست
نه
image !
( شما توی کنترلر و متدتون از image خروجی گرفتید که Null میده)

مورد دوم اینکه شما سعی کنید برای استفاده از متد آپدیت
همیشه مقادیری که میخوایید آپدیت شه رو توی یه آرایه بریزید
برای مثال میگم نمونه زیر
ولیدیشن هم کنید

// برای مثال این نمونه رو ببینید
 $this->validate($request, [
            'file_title' => 'required',
            'fileItem' => 'required'
        ], [
            'file_title.required' => 'اسم فایل را وارد نمایید',
            'fileItem.required' => 'اسم فایل را وارد نمایید',
            'fileItem.mimes' => 'پسوند مجاز نیست',
            'fileItem.image' => 'نوع فایل مجاز نیست',
            'fileItem.max' => 'حجم فایل مجاز نیست',

        ]);
        $file_data = [
            'file_title' => $request->input('file_title'),
            'file_descryption' => $request->input('file_descryption'),
            'file_type' => $request->file('fileItem')->getMimeType(),
            'file_size' => $request->file('fileItem')->getSize(),

        ];
//بعد برای آپدیت

$service->update($file_data);

اینطوری عمل کنید!
بهتر هست
موفق باشید


محمود خسروی
تخصص : طراح و برنامه نویس
@oxbir 5 سال پیش مطرح شد
0

اوه چرا من حواسم بهش نبود


Alimotreb
تخصص : کانفیگ سرور و برنامه نویس
@Alimotreb 5 سال پیش مطرح شد
0

سلام
@oxbir

مشکلی نیست پیش میاد.
موفق باشید


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

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