2012-08-15 54 views
0

我已加載使用
$product = Mage::getModel("catalog/product")->loadByAttribute('sku', $data['id']);Magento的1.7:非系統產品屬性並不在PHP腳本保存

如果我修改或檢索的系統屬性,如重量產品的腳本,一切工作正常:
$product->getWeight(); // returns the correct weight
$product->setWeight(5.0); // correctly sets weight

我有兩個自定義屬性: google_product_category MPN。如果我嘗試使用相同的技術修改它們,如下所示:
$product->setMpn('123ABC');
$product->setGoogleProductCategory('Electronics');

調用不會拋出錯誤,但數據不會保存(是的,之後我調用$ product-> save())。

我在做什麼錯?

+0

嘗試刪除'var/cache'下的所有文件。你也可以嘗試調用'$ product-> getResource() - > getAttribute('mpn') - > getBackend() - > getTable()'來調試 – Serjio 2012-08-15 12:08:16

回答

3

你能發佈你的腳本嗎?你在開發者模式?

它看起來像這個問題是因爲賣場面積

Mage_Catalog_Model_Product看看 - >setOrigData

public function setOrigData($key=null, $data=null) 
{ 
    if (Mage::app()->getStore()->isAdmin()) { 
     return parent::setOrigData($key, $data); 
    } 

    return $this; 
} 

當保存一個產品,它需要將數據與origdata比較。

如果從'admin'區域運行,它可以檢索到origdata。如果您的腳本從「默認」區域運行,它將無法獲取原始數據。

所以,如果你在開發模式,在代碼的某個時候會成爲一個警告拋出這將打破你的腳本(因爲你說沒有錯誤被拋出我可能是錯的)

你可以做它通過將Mage::app('default')更改爲Mage::app('admin') 或使用Mage::app()->setCurrentStore('admin');

+0

這可以工作,謝謝:D – 2014-10-10 00:35:39