Magento 1.7:PHP脚本中未保存的非系统产品属性

时间:2012-08-15 11:16:17

标签: magento

我有一个使用了加载产品的脚本     
$product = Mage::getModel("catalog/product")->loadByAttribute('sku', $data['id']);

如果我修改或检索系统属性,例如体重,一切正常:
$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())。

我做错了什么?

1 个答案:

答案 0 :(得分: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。如果您的脚本从“默认”区域运行,它将无法获取origdata。

因此,如果您处于开发人员模式,在某些代码点会出现一个会破坏您的脚本的警告(我可能错了,因为您说没有抛出错误)

您可以将Mage::app('default')更改为Mage::app('admin')来执行此操作 或使用Mage::app()->setCurrentStore('admin');