سلام خدمت دوستان
من یک فرم دارم که میخوام از دوتا input متفاوت دو فایل (تصویر) مختلف اپلود کنم و در یک جدول دیتابیس ذخیره کنم.
فرض کنید در جدول categories من دو تا ستون به اسم category_image و category_bg دارم.دسته بندیم ایجاد و ویرایش نمیشه؟
AdminController :
<?php
namespace AppHttpControllersAdmin;
use CarbonCarbon;
use IlluminateHttpRequest;
use AppHttpControllersController;
class AdminController extends Controller
{
protected function uploadImages($file)
{
$year = Carbon::now()->year;
$filename = date('Y_m_d') . '_' . $file->getClientOriginalName();
$destination = "/uploads/images/{$year}/categories";
$destinationPath = public_path($destination);
$file->move($destinationPath , $filename);
return $destination . '/'. $filename;
}
}
CategoryController :
<?php
namespace AppHttpControllersAdmin;
use AppCategory;
use AppHttpRequestsCategoryRequest;
use IlluminateHttpRequest;
use AppHttpControllersController;
class CategoryController extends AdminController
{
/**
* Display a listing of the resource.
*
* @return IlluminateHttpResponse
*/
public function index()
{
$categories = Category::latest()->paginate(20);
return view('admin.categories.all' , compact('categories'));
}
/**
* Show the form for creating a new resource.
*
* @return IlluminateHttpResponse
*/
public function create()
{
return view('admin.categories.create');
}
/**
* Store a newly created resource in storage.
*
* @param CategoryRequest|Request $request
* @return IlluminateHttpResponse
*/
public function store(CategoryRequest $request)
{
$imageUrl = $this->uploadImage($request->file(['category_image' , 'category_bg']));
Category::create(array_merge($request->all() , ['category_image' => $imageUrl , 'category_bg ' => $imageUrl]));
return redirect(route('categories.index'));
}
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param AppCategory $category
* @return IlluminateHttpResponse
*/
public function update(Request $request, Category $category)
{
$imageUrl = $request->file(['category_image' , 'category_bg']);
$input = $request->all();
if ($imageUrl){
$input ['category_image'] = $this->uploadImage($request->file('category_image'));
$input ['category_bg'] = $this->uploadImage($request->file('category_bg'));
}else{
$input ['category_image'] = $category->category_image;
$input ['category_bg'] = $category->category_bg;
}
$category->update($input);
return redirect(route('categories.index'));
}
}
ارور :Call to a member function getClientOriginalName() on null
@alirezasafdari
سلام بله هم در create.blade.php و هم در edit.blade.php ایکریپت هست
البته الان تونستم store شو بنویسم اما update شو گیر کردم!!! مشکلم بیشتر کنترلر هست
CategoryController :
/**
* Store a newly created resource in storage.
*
* @param CategoryRequest|Request $request
* @return IlluminateHttpResponse
*/
public function store(CategoryRequest $request)
{
$imageUrl['category_image'] = $this->uploadImage($request->file('category_image'));
$imageUrl['category_bg'] = $this->uploadImage($request->file('category_bg'));
Category::create(array_merge($request->all() , ['category_image' => $imageUrl['category_image'] , 'category_bg ' => $imageUrl['category_bg']]));
return redirect(route('categories.index'));
}
در اپدیت هم دقیقا مثل store فایل ها رو میگیرید و تک تک آپلود میکنید مشکل در چیه
بجای چک کردن imageUrl چک کنید اگر فایلی ارسال شده بود آپلود انجام بشه اگر نشده بود مقدار های قبلی قرار ب گیره
دقیقا update شما میشه شبیه کدی که در جواب قبل این جواب وارد کردید
@hesammousavi
میشه بگید کدوم کد در جواب قبل؟
من الان اپدیتمو اینجوری نوشتم ولی کار نمیکنه!!منظورتون اینجوریه؟
/**
* Update the specified resource in storage.
*
* @param IlluminateHttpRequest $request
* @param AppCategory $category
* @return IlluminateHttpResponse
*/
public function update(Request $request, Category $category)
{
$imageUrl['category_image'] = $this->uploadImage($request->file('category_image'));
$imageUrl['category_bg'] = $this->uploadImage($request->file('category_bg'));
$input = $request->all();
if ($request->hasFile($imageUrl['category_image'])){
$input ['category_image'] = $this->uploadImage($request->file('category_image'));
}else{
$input ['category_image'] = $category->category_image;
}
if($request->hasFile($imageUrl['category_bg'])){
$input ['category_bg'] = $this->uploadImage($request->file('category_bg'));
}else{
$input ['category_bg'] = $category->category_bg;
}
$category->update($input);
return redirect(route('categories.index'));
}
قسمت اول یعنی
$imageUrl['category_image'] = $this->uploadImage($request->file('category_image'));
$imageUrl['category_bg'] = $this->uploadImage($request->file('category_bg'));
$input = $request->all();
نیاز نیست
و بقیه باید کار کنه
قبل اینکه آپدیت کنید با dd تست بگیرید ببینید چه مقادیری برگشت پیدا میکنه
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟