代码之家  ›  专栏  ›  技术社区  ›  Knowledge Craving

在magento中获取购物车项目的两个命令之间的差异

  •  3
  • Knowledge Craving  · 技术社区  · 14 年前

    在Magento中,如果您需要获取/获取购物车的项目详细信息,您可以使用以下两种可能的方法之一进行操作,这将为您提供数组中的所有已购物项目:

    1. $cartItems1 = $cart->getQuote()->getAllItems();
    2. $cartItems2 = $cart->getItems()->getData();

    但在使用上述两种方法中的任何一种之前,您需要将购物车对象初始化为:

    $cart = new Mage_Checkout_Model_Cart();
    $cart->init();
    

    任何人都能详细描述这两个选项提供了什么以及它们之间的区别,以及它们可能的用法吗?

    在Magento还有其他类似的选项可供选择,有人能突出显示吗?

    1 回复  |  直到 14 年前
        1
  •  10
  •   silvo    14 年前

    如果您查看购物车和报价类的代码,一切都将变得清晰。

    这是$cart->getitems()的代码:

    public function getItems()
    {
      return $this->getQuote()->getAllVisibleItems();
    }
    

    简单明了——它只调用Quote对象的方法。所以现在的问题是: 两者有什么区别 获取所有可见项() GETALLITITS() ?

    让我们看看这两种方法的代码:

    public function getAllItems()
    {
        $items = array();
        foreach ($this->getItemsCollection() as $item) {
            if (!$item->isDeleted()) {
                $items[] =  $item;
            }
        }
        return $items;
    }
    
    public function getAllVisibleItems()
    {
        $items = array();
        foreach ($this->getItemsCollection() as $item) {
            if (!$item->isDeleted() && !$item->getParentItemId()) {
                $items[] =  $item;
            }
        }
        return $items;
    }
    

    唯一的区别是: 获取所有可见项() 对每个项目进行附加检查:

    !$item->getParentItemId()
    

    它测试产品是否有父级(换句话说,它测试产品是否是简单产品)。因此,该方法的返回数组将缺少简单的产品,而不是 GETALLITITS() .

    是否有其他方法来检索项目?

    一种方法是直接从Quote对象获取产品集合:

    $productCollection = $cart->getQuote()->getItemsCollection();