2016-08-19 94 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

相關問題