Jul 1, 2017
0
Level 1
Creating default object from empty value
I'm facing a problem edit a product in my application. When I filled and submit the form I get "Creating default object from empty value" error in Categorie.php line 47. I don't know what am doing wrong. Here is the model Catergorie.php:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Session;
class Categorie extends Model {
public function products() {
return $this->hasMany('App\Product');
}
static public function save_category($request) {
$image_name='noimage.jpg';
if ($request->hasFile('image') && $request->file('image') ->isValid() ) {
$file= $request->file('image');
$image_name= date('Y.m.d.H.i.s').'-'.$file->getClientOriginalName();
$request->file('image')->move(public_path(). '/images' , $image_name);
}
$category= new self();
$category->title= $request['title'];
$category->article=$request['article'];
$category->image= $image_name;
$category->url=$request['url'];
$category->save();
Session::flash('sm','Category has been saved');
}
static public function updateCategory($request, $id) {
$image_name='';
if ($request->hasFile('image') && $request->file('image') ->isValid() ) {
$file= $request->file('image');
$image_name= date('Y.m.d.H.i.s').'-'.$file->getClientOriginalName();
$request->file('image')->move(public_path(). '/images' , $image_name);
}
$category= self::find($id);
/******line 47*******/ $category->title= $request['title'];
$category->article=$request['article'];
if($image_name){
$category->image=$image_name;
}
$category->url=$request['url'];
$category->save();
Session::flash('sm','Category has been updated');
}
}
Product controller:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests\CategoryRequest;
use App\Http\Requests\ProductRequest;
use App\Categorie;
use App\Product;
use Session;
class ProductController extends MainController
{
function __construct() {
parent::__construct();
$this->middleware('adminAuth');
}
public function index()
{
self::$data['products']=Product::all()->toArray();
return view('cms.products', self::$data);
}
public function create()
{
self::$data['categories']= Categorie::all()->toArray();
return view('cms.add_product', self::$data);
}
public function store(ProductRequest $request)
{
Product::save_product($request);
return redirect('cms/products');
}
public function show($id)
{
self::$data['item_id']=$id;
return view('cms.delete_product', self::$data);
}
public function edit($id)
{
self::$data['categories']= Categorie::all()->toArray();
self::$data['product']=Product::find($id)->toArray();
return view('cms.edit_product',self::$data);
}
public function update(CategoryRequest $request, $id)
{
Categorie::updateCategory($request,$id);
return redirect('cms/products');
}
public function destroy($id)
{
Product::destroy($id);
Session::flash('sm','Product has been deleted');
return redirect('cms/Products');
}
}
Routes:
<?php
#CMS
Route::get('cms/dashboard','CmsController@dashboard');
Route::resource('cms/menu','MenuController');
Route::resource('cms/content','ContentController');
Route::resource('cms/categories','CategoryController');
Route::resource('cms/products','ProductController');
#shop
Route::get('shop', 'ShopController@categories');
Route::get('shop/order', 'ShopController@order');
Route::get('shop/clear-cart', 'ShopController@clearCart');
Route::get('shop/update-cart', 'ShopController@updateCart');
Route::get('shop/checkout', 'ShopController@checkout');
Route::get('shop/add-to-cart', 'ShopController@addToCart');
Route::get('shop/{category_url}', 'ShopController@products');
Route::get('shop/{category_url}/{product_url}', 'ShopController@item');
#user
Route::get('user/signin', 'UserController@signin');
Route::post('user/signin', 'UserController@postSignin');
Route::get('user/signup', 'UserController@signup');
Route::post('user/signup', 'UserController@postSignup');
Route::get('user/logout', 'UserController@logout');
#pages
Route::get('/', 'PagesController@home');
Route::get('{url}', 'PagesController@boot');
the view-edit_product.blade
@extends('cms.cms_master')
@section('cms_content')
<h1 class="page-header">Edit product -</h1>
<div class="row ">
<div class="col-md-8">
<form id="edit-product-form" method="post" action="{{url('cms/products/'.$product['id'])}}"enctype="multipart/form-data">
{{csrf_field()}}
{{method_field('PUT')}}
<input type="hidden" name="item_id" value="{{$product['id']}}">
<label for="category-id">Category</label>
<select name="categorie_id" id="category-id" class="form-control">
@foreach ($categories as $item)
<option @if($item['id']==$product['categorie_id'] ) selected="selected" @endif value="{{$item['id']}}">{{$item['title']}}</option>
@endforeach
</select>
</div>
<div class="form-group">
<label for="title">Title</label>
<input value="{{$product['title']}}" name="title" type="text" class="form-control origin-text" id="title" placeholder="Title">
</div>
<div class="form-group">
<label for="url">Url</label>
<input value="{{$product['url']}}" name="url" type="text" class="form-control target-text" id="url" placeholder="url">
</div>
<div class="form-group">
<label for="summernote">Article</label>
<textarea name="article" id="summernote" class="form-control">{{$product['article']}}</textarea>
</div>
<div class="form-group">
<label for="price">Price</label>
<input value="{{$product['price']}}" name="price" type="text" class="form-control" id="price" placeholder="price">
</div>
<div class="form-group">
<img width="50" src="{{asset('images/'.$product['image'])}}"
<br><br>
<label for="image">Change product image</label>
<input name="image" type="file" id="image">
</div>
<button name="submit" type="submit" class="btn btn-pimary">Edit product</button>
<a href="{{url('cms/products') }}" class="btn btn-deafult">Cancel</a>
</form>
</div>
</div>
@endsection
Please or to participate in this conversation.