为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
尚方宝剑之说 2023-07-08 17:52:04
我必须从购物车中删除产品,但我遇到了以下错误:尝试获取非对象的属性“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<?phpnamespace 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');    }
查看完整描述

3 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

你必须这样使用

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

或者

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


查看完整回答
反对 回复 2023-07-08
?
倚天杖

TA贡献1828条经验 获得超3个赞

尝试替换$product->id$product['id']. 所以这一行:

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

对此进行更改:

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


查看完整回答
反对 回复 2023-07-08
?
达令说

TA贡献1821条经验 获得超6个赞

修改你的代码如下


购物车.blade.php


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

    @csrf

    {{ method_field('DELETE') }}

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

</form>

路线


Route::get('/destroy/{product}', [

     'uses' => 'ProductController@destroy',

     'as' => 'remove.item']);

那么它应该可以解决你的问题


查看完整回答
反对 回复 2023-07-08
  • 3 回答
  • 0 关注
  • 99 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信