在 Magento 中,如何让 `getAllVisibleItems()` return 购物车中 return 可配置产品的选定属性值?

In Magento, how can I have the `getAllVisibleItems()` return the chosen attribute values of the configurable products it returns in cart?

我正在尝试列出购物车中的所有产品,并列出他们所选择的 color/size,等等。在主网站上,Magento 似乎是这样做的,如下图所示。但是,当我尝试以编程方式执行此操作时,我得到的自定义属性为 null。

这是我当前的代码:

    $quote->getAllVisibleItems();

    foreach ($allCartItems as $item) {

        $productInfo = array();
        $product = $item->getProduct();
        $productInfo["size"] = $product->getSize();
        ...
    }

如果我使用 getAllItems() 而不是 getAllVisibleItems(),那么我最终会得到 simple/configurable 产品,这将导致应用程序必须使用哪个项目 ID 的问题更新产品(以及列出重复的项目)。

我在网上找到的唯一解决方案是对列出的每个产品使用 $product = $model->load($model->getIdBySku($sku)); 再次加载产品,但这似乎会非常耗费性能!

如何让 getAllVisibleItems() return 可配置产品的选定属性和属性值 returns?

[
    {
    name: "Tori Tank",
    price: "60.0000",
    id: "418",
    product_id: "418",
    item_id: "2481",
    sku: "wbk004",
    color: null,
    size: null,
    quantity: 1
    },
    {
    name: "Chelsea Tee",
    price: "75.0000",
    id: "410",
    product_id: "410",
    item_id: "2483",
    sku: "mtk005",
    color: null,
    size: null,
    quantity: 1
    }
]

如您所见,color/size 被 return 编辑为 null。

快速解决方案:

$item->getProduct()->getTypeInstance(true)->getOrderOptions($item->getProduct());

解释:

您有一个问题,因为当您 运行 $item->getProduct(); 您刚刚收到这个可配置的产品。如果你 运行 Mage::getModel('catalog/product')->load($someConfigurableProductId)

也是一样的