2016-08-19 101 views
3

我有一个观察者,我想从我的购物车项目中检查一些信息。Magento - 从购物车项目中获得产品信息

我要加载的产品属性对这些项目:

$items = $observer->getCart()->getItems(); 
foreach ($items as $item) { 
    $product = $item->getProduct(); 
    if ($product->getData('my_attribute')) { 
     // My logic 
    } 
} 

但我的业务逻辑从来没有像my_attribute执行在$item->getProduct()信息不被加载。

我试图在​​3210文件中添加以下代码:

<config> 
    <global> 
     <sales> 
      <quote> 
       <item> 
        <product_attributes> 
         <my_attribute /> 
        </product_attributes> 
       </item> 
      </quote> 
     </sales> 

这对我的作品被加载单独的产品的唯一代码:

$product = Mage::getModel('catalog/product')->load($item->getProductId()); 

什么加载之间的区别catalog\product的产品和我的购物车中的产品?

+0

你有从下面的答案解决? –

回答

0

您可以按照指令:

enter image description here

这可以用XML通过添加以下代码到你的config.xml文件来完成:

<global> 
    <sales> 
     <quote> 
      <item> 
       <product_attributes> 
        <attribute1 /> 
        <attribute2 /> 
       </product_attributes> 
      </item> 
     </quote> 
    </sales> 
</global> 

其中ATTRIBUTE1和attribute2是你的属性码。然后你可以使用下面的代码访问属性:

$item->getData('attribute1'); 
//if you use observer or quote object: 
$item->getProduct()->getData('attribute1'); 
+0

我也会试一下这个代码,但问题是:为什么'$ item-> getProduct()'不会加载我想要添加到'config.xml'中的属性? – nano

+0

请查看此参考:https://www.atwix.com/magento/accessing-custom-attribute-at-checkout-or-cart/ –

+0

我的代码与该页面中的代码完全相同,但我的新属性从未加载使用'$ item-> getProduct() - > getData('my_attribute')'。只有在加载整个产品时:'$ product = Mage :: getModel('catalog/product') - > load($ item-> getProductId());' – nano

相关问题