R0.IT's avatar
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
0 likes
0 replies

Please or to participate in this conversation.