当前位置: 首页 > 知识库问答 >
问题:

购物车的数量未更新

宦博超
2023-03-14

我正在跟随Laravel的购物车教程,但即使我已经将他的代码复制到了点子上,它也不像教程中那样工作。每次你点击一个产品时,购物车的数量应该会增加,但事实并非如此。

我正在学习Max Schwarzmueller的“Laravel购物车”教程,您可以在youtube上找到:https://www.youtube.com/watch?v=56TizEw2LgI

我是php、laravel和sessions的新手。我尝试使用facades(例如Session::put)而不是“$request”-

在ProductController.php

<?php

namespace App\Http\Controllers;

use Session;
use App\Http\Controllers;
use App\Product;
use App\Cart;
use Illuminate\Http\Request;

class ProductController extends Controller
{
    public function getIndex()
    {
        $products = Product::all();
        return view('shop.index', ['products' => $products]);
    }

    public function getAddToCart(Request $request, $id){
        $product = Product::find($id);

        //check in session if cart already contains product
        $oldCart = Session::has('cart') ? Session::get('cart') : null;

        //if it did contain products, pass them to constructor
        $cart= new Cart($oldCart);

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

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

        return redirect()->route('product.index');
    }
}

在Cart.php中

<?php

namespace App;

use Session;

class Cart 
{
    public $items = Array();
    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) {
        //default values if item not in cart 
        $storedItem = [
            'qty' => 0,
            'price' => $item->price,
            'item' => $item
        ];

        //if item is already in shopping cart
        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;
    }
}

每次我点击产品,它都会激活productController的getaddtoCart功能

<a href="{{ route('product.addToCart', ['id'=> $product->id]) }}">Order</a>

我希望每次点击每个产品的“订单”时,购物车的总数应该会增加。如果我在戳球的“订单”上单击两次,这个特定项目的“数量”(id为1)也应该增加。
但是总数从0开始,但不增加超过1。具体项目的数量也保持为1。

共有1个答案

桓风史
2023-03-14

我花了一段时间才发现这一点,但事实证明,这是一个简单的语法错误,使一切都偏离了轨道。购物车的构造函数是用一个下划线定义的,应该用双下划线定义。

因为PHP不需要使用构造函数,所以合并旧/新购物车的代码根本没有运行。https://stackoverflow.com/a/455929/296555

// Wrong
public function _construct($oldCart){
   ...
}

// Right
public function __construct($oldCart){
   ...
}
 类似资料:
  • 对于标准的opencart行为,在cart中添加产品后,用户需要手动点击update按钮进行数量更新。有关示例,请参阅http://demo.opencart.com/。但是,我想更改为当我改变数量时,推车信息可以立即刷新。我尝试过以下代码,但它不起作用: 对于Catalog/View/Theme/Default/Template/Checkout/cart.tpl,我已更新: button ty

  • 我有一个购物车,目前允许我添加产品,删除产品,并与一个产品在车上,我可以改变其数量。 然而,如果我在购物车中有两个产品,我试图改变第一个项目的数量,网站就会崩溃。它不会用新的数量重新加载页面,它只是超时,你不能再点击网站上的任何其他链接。 显示数量的代码为: 处理这个问题的代码如下: 我在这里查看了答案,但没有找到解决方案。有人能帮我吗?我会尽力提供可能需要帮助的任何其他信息。 我只是想澄清一下,

  • 我有一个Android购物应用程序,可以根据库存中产品的可用性来购买产品。最后,我需要扣除购物车上的产品数量,并更新数据库中该商品的数量。问题是,它当前更新了购物车中最后一件商品的数量的数据库值。如何让它更新购物车中商品数量的所有数据库值?。请有人帮帮我。Bellow是执行此操作的类的代码。

  • 我对Java的概念很陌生。我使用核心java设计了一个购物车应用程序。但我无法获得所需的输出。这是我的pojo课程项目。Java语言 主要课程是ShopCartTest。Java语言 有4个pojo的购物车,库存,项目,用户。用户必须能够选择多个数量的多个项目。(对于项目,将创建一个列表,对于数量:映射。其中项目对象是键,数量是值)。用户选择类别、项目,然后选择数量。然后他可以继续结帐。所以当他决

  • 我正在用PHP编写一个自定义购物车,我将产品信息添加到购物车会话中,如下所示: 我的挑战是:如果产品已经存在于$\u SESSION['cart]数组中,我想更新产品的价格和数量($qty),而不是添加它。像这样的

  • 购物车 手淘iOS 5.2.5 Android 5.2.7,天猫客户端暂未支持 Tida.cart({ sellerNick: "莱夫箱包旗舰店", itemId: "42828909348", skuId: "73068526031" }, function (data) { alert(JSON.stringify(data)); }); 该接口支持SPI回