php - Laravel 错误:调用未定义的方法 App\Cart::delete()
问题描述
我正在尝试激活购物车(laravel 项目)上的删除按钮。实现功能破坏后,我面临错误Call to undefined method App\Cart::delete()
。在我看来,我也尝试过{{ route('cart.destroy', ['id' => $product['item']['id']]) }}
我的观点,但还是一样。似乎还可以,但我不知道该怎么做,我对此很感兴趣。
购物车: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, 'imagePath' => $item->imagePath];
if ($this->items ) {
if (array_key_exists($id, $this->items)) {
$storedItem = $this->items[$id];
}
}
$storedItem['qty']++;
$storedItem['price'] = $item->price * $storedItem['qty'];
$storedItem['imagePath'] = $item->imagePath;
$this->items[$id] = $storedItem;
$this->totalQty++;
$this->totalPrice += $item->price;
}
}
购物车控制器.php:
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');
}
public function getCart()
{
if (!Session::has('cart')) {
return view('cart');
}
$oldCart = Session::get('cart');
$cart = new Cart($oldCart);
return view('cart', ['products' => $cart->items, 'totalPrice' => $cart->totalPrice]);
}
/**
* Remove the specified resource from storage.
* @param int $id
* @return \Illuminate\Http\Request
*/
public function destroy(Request $request, $id)
{
$oldCart = Session::has('cart') ? Session::get('cart') : null;
$cart = new Cart($oldCart);
$cart->delete($product, $product->id);
$request->session()->put('cart', $cart);
return redirect()->route('cart');
}
}
购物车.blade.php:
<form method="POST" action="{{ route('cart.destroy', $product['item']['id']) }}" >
@csrf
{{ method_field('DELETE') }}
<input type="submit" value="Delete" onclick="return confirm('Are you sure?')" class="btn btn-danger" />
</form>
解决方案
添加来自@aynber的评论作为解决方案:您的购物车类中没有删除功能。您需要创建一个。
推荐阅读
- memory - JDK 11(和更新版本)DirectByteBuffer 即使在启动时也拥有大量的堆外内存
- terraform - 如何在具有单独 tfstate 文件的项目之间共享与环境无关的资源?
- android - 使用屏幕宽度和纵横比计算视图高度在 1440p 屏幕上不起作用
- android - 如何使用其他人创建但未构建的应用程序?
- ruby - Shopify 帮助退货订单项属性
- python-3.x - Boto3 - 使用 CLI 参数将多文件上传到特定 S3 存储桶“路径”
- reactjs - 如何向 FlatList 添加新数据。(反应本机)
- javascript - 如何从 JavaScript 中的均值和标准截断正态分布中获取随机值?
- python - Rioxarray 维度缺少坐标
- python - 如何在熊猫中读取具有完整路径的csv文件