Php 调用$item->getProduct()会损坏所选的自定义选项
我注意到,对于具有自定义选项的项目,在购物车或结帐中使用item->getProduct会出现一个问题。特别是如果您的购物车有两个相同的产品,但不同的自定义选项选择 例如:购物车包含2个产品A,一个具有大小自定义选项小价格+0美元,另一个具有大价格自定义选项+5美元 我观察了“目录、产品、最终价格”活动 以下是我的观察者函数:Php 调用$item->getProduct()会损坏所选的自定义选项,php,magento,Php,Magento,我注意到,对于具有自定义选项的项目,在购物车或结帐中使用item->getProduct会出现一个问题。特别是如果您的购物车有两个相同的产品,但不同的自定义选项选择 例如:购物车包含2个产品A,一个具有大小自定义选项小价格+0美元,另一个具有大价格自定义选项+5美元 我观察了“目录、产品、最终价格”活动 以下是我的观察者函数: public function onGetFinalPrice($observer) { $items = $this->getCheckout()->
public function onGetFinalPrice($observer)
{
$items = $this->getCheckout()->getQuote()->getAllItems();
foreach($items as $item){
$product = $item->getProduct();
}
}
购物车中两种商品的价格现在都是+5美元。
以下是来自Mage_Sales_Model_Quote_Item_Abstract的getProduct函数:
public function getProduct()
{
$product = $this->_getData('product');
if ($product === null && $this->getProductId()) {
$product = Mage::getModel('catalog/product')
->setStoreId($this->getQuote()->getStoreId())
->load($this->getProductId());
$this->setProduct($product);
}
/**
* Reset product final price because it related to custom options
*/
$product->setFinalPrice(null);
if (is_array($this->_optionsByCode)) {
$product->setCustomOptions($this->_optionsByCode);
}
return $product;
}
报价项目的变量$\u optionsByCode似乎没有保留唯一值。调用getProduct会重置这些值,从而损坏它们。有什么解决办法吗?我建议不要使用目录、产品、最终价格
结帐\购物车\产品\在更好的流程后添加\因为使用此事件可以在购物车上设置产品的任何价格
config.xml中的配置外观:
您可以尝试$item->getFinalPrice而不是$item->getProduct->getFinalPrice吗?调用$item->getProduct是必需的,因为在observer中,我需要从产品中检索信息。我感兴趣的是为什么执行此调用时会重置自定义选项。
<events>
<checkout_cart_product_add_after>
<observers>
<apply_custom_price>
<class>custompriceset/observer</class>
<method>applyCustomPrice</method>
</apply_custom_price>
</observers>
</checkout_cart_product_add_after>
</events>