【问题标题】:Get cart contents from my custom module in Magento从我在 Magento 的自定义模块中获取购物车内容
【发布时间】:2016-03-15 12:58:30
【问题描述】:

在我的 magento 中,我已将产品添加到购物车 - 所以我在结帐页面上看到以下内容:

我有一个带有TestControllerIndexAction 的自定义模块,我想在其中检索篮子的当前内容以进行自定义处理。这将用于提供“获取交付成本估算”类型的功能。

即客户将一堆物品添加到购物篮中(作为客人),单击前端的一个按钮,它将它们带到我们的模块,在那里他们将输入目的地国家和邮政编码,我们将进行一些定制处理,让客户知道估计的运费将是。

我尝试这样检索购物篮内容:

$cart_contents = Mage::helper('checkout')->getQuote();
foreach ($cart_contents->getItemsCollection() as $item) {
   var_dump($item->getName());
}
exit;

这不会返回任何东西。

我也尝试了不同的方法:

$quote = Mage::getSingleton('checkout/session')->getQuote();
$cartItems = $quote->getAllVisibleItems();
echo "<pre>";
foreach ($cartItems as $item) {
    print_r($item->getData());
}
exit;

这也没有返回任何内容。

记住;这是访客结帐(即客户未登录)。

测试是否有有效的报价;我做了以下事情:

echo "<pre>";
print_r(Mage::helper('checkout')->getQuote()->getData());
echo "<hr>";
print_r(Mage::getSingleton('checkout/session')->getQuote()->getData());
exit;

这是我回来的:

Array
(
    [store_id] => 5
    [is_checkout_cart] => 1
    [remote_ip] => 90.xxx.xxx.xxx
    [x_forwarded_for] => 90.xxx.xxx.xxx
)
Array
(
    [store_id] => 5
    [is_checkout_cart] => 1
    [remote_ip] => 90.xxx.xxx.xxx
    [x_forwarded_for] => 90.xxx.xxx.xxx
)

【问题讨论】:

    标签: php magento magento-1.9


    【解决方案1】:

    您可以使用以下脚本在您的自定义控制器操作中获取购物车项目。

    $itemsCollection = Mage::getSingleton('checkout/session')->getQuote()->getItemsCollection();
    $itemsVisible = Mage::getSingleton('checkout/session')->getQuote()->getAllVisibleItems();
    $items = Mage::getSingleton('checkout/session')->getQuote()->getAllItems();
    <?php foreach($items as $item) { ?>     
        <p class="product-name"><a href="<?php echo $item->getProductUrl();?>"><?php echo $item->getName(); ?></a></p>
        <span class="price"><?php echo Mage::helper('core')->currency($item->getPrice(),true,false);?></span>
        <span class="qty">Qty: <?php echo $item->getQty(); ?> </span>
    <?php } ?>
    

    【讨论】:

    • 我也试过了,它返回的是空的。这太奇怪了。
    • 你用的是哪个magento版本?
    • Magento ver. 1.9.1.0
    • 它应该可以工作,你的情况可能还有其他问题,因为我只是在同一个版本上测试过它。您的购物车页面是否显示所有商品?
    • 你能不能试试把这段代码放在任何phtml文件上,只是为了测试目的,需要确认你的模块是否有问题。
    【解决方案2】:

    这是获取购物车商品的 Magento 代码;试试看:

    $cart = Mage::getModel('checkout/cart')->getQuote();
    
    if($cart->getAllItems()):
        foreach ($cart->getAllItems() as $item):
            echo $item->getProduct()->getName();
        endforeach;
    endif;
    

    【讨论】:

    • 又是空的。不过我可以看到购物车中的商品。
    • 虽然此答案可能是正确且有用的,但如果您 include some explanation along with it 解释它如何帮助解决问题,则最好。如果有变化(可能不相关)导致它停止工作并且用户需要了解它曾经是如何工作的,这在未来变得特别有用。谢谢!
    • @Hatchet 这是获取购物车商品的 magento 代码。无需解释。
    猜你喜欢
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多