Gaurav Singh
Gaurav Singh

Reputation: 39

Trying to get property 'id' of non-object in demo.blade.php

Hi I am working on the checkout page in laravel and sent some product data from the cart to checkout and trying to print all the details from an json object but i keep getting the error as Trying to get property 'id' of non-object

The controller function is

    public function bill(Request $request){

         $input = $request->all();
         return view('demo')->with('product' , $request->product)
                            ->with('subtotal' , round($request->subtotal));
     } 

the cart form is

    <form method="post" action="{{ route('pay')}}">
          {{ csrf_field() }}

           @foreach($cart as $product)
               <input type="hidden" name="product[]" value="{{ $product }}">
           @endforeach
           <input type="hidden" name="subtotal" value="{{$subtotal}}">
           <button type="submit" class="gray_btn">Checkout</button>
    </form>

the blade page is

    @foreach($product as $input)

        {{ $input }}

        {{ $input->id }}

    @endforeach

when i only print the input i am getting the result as

    {"id":"10","name":"S007-4ft","price":40,"quantity":"102","attributes":{"image":"glassfilms\/December2019\/MyelERNBbAWhGRbKWiCK.jpg","crm":"PRO209"},"conditions":[]} {"id":"7","name":"Frosted 007-4ft","price":40,"quantity":"103","attributes":{"image":"glassfilms\/December2019\/ZJgWUNaYrPnvsoRfuagv.jpg","crm":"PRO105"},"conditions":[]} 

but when i try to print the id only using {{input->id }} i am getting the error.

the route is

Route::post('pay', 'RazorpayController@bill')->name('pay');

Upvotes: 0

Views: 77

Answers (2)

mitkosoft
mitkosoft

Reputation: 5316

You have to pass an array in order to have access by a key, i.e. call json_decode() when returning it:

    public function bill(Request $request) {
        $input = $request->all();
        return view('demo')
            ->with('product', json_decode($request->product, true)) // <-- here
            ->with('subtotal', round($request->subtotal));
    }

Otherwise the returned value is a just simple string in JSON "shape". Error say it clear ehough: non-object.

Upvotes: 2

Muhammad Bilal
Muhammad Bilal

Reputation: 517

You are using json object as php object please decode your json object first than you can use it as php object:

$obj = json_decode($input);
$obj->id // Now you can use it like this

Upvotes: 0

Related Questions