在 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)
也是一样的
我正在尝试列出购物车中的所有产品,并列出他们所选择的 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)