Laravel 错误:尝试获取非对象的属性“id”

我必须从购物车中删除产品,但我遇到了以下错误:

尝试获取非对象的属性“id”(查看:/home/acer/test/project_basket/basket/resources/views/cart.blade.php)。

我也尝试以不同的方式,...删除会话,但我不知道似乎有点困难,因为我只需要删除一个产品。对于购物车中添加的每一个相同的产品,我都会创建徽章,每次都会增加一。

购物车.blade.php

@foreach($products as $product)

<tr>

   <td><img src="https://via.placeholder.com/400x200/" class="img-cart"></td>

      <td><strong>{{ $product['item']['title'] }}</strong></td>

          <td>

            <form class="form-inline">

                 <input class="form-control" type="text" value="{{ $product['qty'] }}" style="margin-right: 20px" >

                  <!--<button rel="tooltip" class="btn btn-default"><i class="fa fa-pencil"></i></button>-->

                       <form method="POST" action="{{ route('remove.item', $product->id) }}" > 

                             @csrf

                             {{ method_field('DELETE') }}

                             <input type="submit" value="Delete" onclick="return confirm('Are you sure?')" class="btn btn-primary" />

                                    

                       </form>

                     </form>

                   </td>

                  <td>${{ $product['price'] }}</td>

              </tr>

@endforeach

产品控制器.php


<?php


namespace App\Http\Controllers;


use App\Cart;

use App\Product;


use Illuminate\Http\Request;

use Session;


class ProductController extends Controller


{

    /**

    *@return \Illuminate\Http\Response

    */

    public function index()

    {

        $products = Product::all();

        return view('home', ['products'=> $products]);

    }


    public function getAddToCart(Request $request, $id) 

    {

        $product = Product::find($id);

        $oldCart = Session::has('cart') ? Session::get('cart') : null;

        $cart = new Cart($oldCart);

        $cart->add($product, $product->id);


        $request->session()->put('cart', $cart);

        return redirect()->route('home');

    }

尚方宝剑之说
浏览 103回答 3
3回答

噜噜哒

你必须这样使用<form&nbsp;method="POST"&nbsp;action="{{route('remove.item',['product'=>$product['id']])}}"&nbsp;>或者<form&nbsp;method="POST"&nbsp;action="{{route('remove.item',['product'=>$product->id])}}"&nbsp;>

倚天杖

尝试替换$product->id为$product['id'].&nbsp;所以这一行:<form&nbsp;method="POST"&nbsp;action="{{&nbsp;route('remove.item',&nbsp;$product->id)&nbsp;}}"&nbsp;>对此进行更改:<form&nbsp;method="POST"&nbsp;action="{{&nbsp;route('remove.item',&nbsp;$product['id'])&nbsp;}}"&nbsp;>

达令说

修改你的代码如下购物车.blade.php<form method="POST" action="{{ route('remove.item', $product) }}" >&nbsp;&nbsp; &nbsp; @csrf&nbsp; &nbsp; {{ method_field('DELETE') }}&nbsp; &nbsp; <input type="submit" value="Delete" onclick="return confirm('Are you sure?')" class="btn btn-primary" /></form>路线Route::get('/destroy/{product}', [&nbsp; &nbsp; &nbsp;'uses' => 'ProductController@destroy',&nbsp; &nbsp; &nbsp;'as' => 'remove.item']);那么它应该可以解决你的问题
打开App,查看更多内容
随时随地看视频慕课网APP