【问题标题】:Get shopping cart details in Magento在 Magento 中获取购物车详细信息
【发布时间】:2011-01-07 13:00:54
【问题描述】:

我想通过 Magento 的 getQuote 函数获取购物车详细信息。我该怎么做?

$cart = Mage::getModel('checkout/cart')->getQuote();

当我打印 $cart 页面停止执行并显示空白页。 但是当我写

$cart = Mage::getModel('checkout/cart')->getQuote()->getData();

并打印$cart 将显示一个数组。但我想跟踪完整的购物车数据(产品 ID、产品价格等所有信息)。

有没有其他方法可以找到购物卡数据?

【问题讨论】:

    标签: magento


    【解决方案1】:

    getQuote 返回的对象是Mage_Sales_Model_Quote。它有一个 getAllItems 方法,该方法又返回 Mage_Sales_Model_Quote_Item 对象的集合。

    这意味着您可以像这样检查产品:

    $cart = Mage::getModel('checkout/cart')->getQuote();
    foreach ($cart->getAllItems() as $item) {
        $productId = $item->getProduct()->getId();
        $productPrice = $item->getProduct()->getPrice();
    }
    

    PS。你得到一个空白页面的原因是因为转储整个对象可能陷入递归并且页面超时,或者 PHP 内存不足。使用 getDatadebug 更安全,但如您所见,不会返回受保护/私有变量。

    【讨论】:

    • 这里唯一要添加的是安装 xDebug 可以“安全”地将对象放入 PHP var_dump 函数并避免大多数与递归相关的问题。
    • 伟大的只是一个快速的小修复它是:foreach ($cart->getAllItems() as $item) 而不是 foreach ($cart->getItems() as $item)。 >
    • @mahdi 如果您知道购物车 ID,那么加载它的工作方式与 Magento 中的所有其他模型相同,$cart = Mage::getModel('checkout/cart')->load($id)
    • 我尝试使用上面的方法检查我的购物车的ID,但是每个产品的ID都与第一项相同,为什么?
    • 我只是盯着 Magento。在这种情况下@clockworkgeek,购物车ID与报价ID相同吗? (即在 sales_flat_quote 中)
    【解决方案2】:

    使用 getQuote() 方法获取购物车商品

    $cart = Mage::getModel('checkout/cart')->getQuote()->getItemsCollection();
    echo "<pre>";
    print_r($cart->getData());
    

    不使用 getQuote() 方法获取购物车商品

    $cart = Mage::getModel('checkout/cart')->getItems();
    echo "<pre>";print_r($cart->getData());
    

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 2020-02-29
      • 2019-09-23
      • 1970-01-01
      • 1970-01-01
      • 2012-08-30
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      相关资源
      最近更新 更多