Php Larvel错误:尝试获取属性';id';非对象
我必须从购物车中删除产品,但我发现以下错误: 正在尝试获取非对象的属性“id”(视图: /home/acer/test/project_basket/basket/resources/views/cart.blade.php) 我也尝试了不同的方式。。。删除会话但我不知道似乎有点困难,因为我只需要删除一个产品。 对于购物车中添加的每一个相同的产品,我都会创建一个每次递增一个的徽章 cart.blade.phpPhp Larvel错误:尝试获取属性';id';非对象,php,laravel,routes,laravel-routing,Php,Laravel,Routes,Laravel Routing,我必须从购物车中删除产品,但我发现以下错误: 正在尝试获取非对象的属性“id”(视图: /home/acer/test/project_basket/basket/resources/views/cart.blade.php) 我也尝试了不同的方式。。。删除会话但我不知道似乎有点困难,因为我只需要删除一个产品。 对于购物车中添加的每一个相同的产品,我都会创建一个每次递增一个的徽章 cart.blade.php @foreach($products as $product) <tr>
@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
<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>
Cart.php
<?php
namespace App;
class Cart
{
public $items = null;
public $totalQty = 0;
public $totalPrice = 0;
public function __construct($oldCart)
{
if ($oldCart) {
$this->items = $oldCart->items;
$this->totalQty = $oldCart->totalQty;
$this->totalPrice = $oldCart->totalPrice;
}
}
public function add($item, $id)
{
$storedItem = ['qty' => 0, 'price' => $item->price, 'item' => $item];
if ($this->items ) {
if (array_key_exists($id, $this->items)) {
$storedItem = $this->items[$id];
}
}
$storedItem['qty']++;
$storedItem['price'] = $item->price * $storedItem['qty'];
$this->items[$id] = $storedItem;
$this->totalQty++;
$this->totalPrice += $item->price;
}
}
如下所示修改代码
cart.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
<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>
然后它会解决您的问题尝试将$product->id
替换为$product['id']
。所以这一行:
<form method="POST" action="{{ route('remove.item', $product->id) }}" >
对此的更改:
<form method="POST" action="{{ route('remove.item', $product['id']) }}" >
你必须这样使用
<form method="POST" action="{{route('remove.item',['product'=>$product['id']])}}" >
或
您好,我按照建议做了更改,但是我已经得到了这个未定义索引:id(View:/home/acer/test/project\u basket/basket/resources/views/cart.blade.php)
@GazmirSulcaj我已经更新了我的答案。请再检查一遍
<form method="POST" action="{{route('remove.item',['product'=>$product['id']])}}" >
<form method="POST" action="{{route('remove.item',['product'=>$product->id])}}" >