0

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

如果我修改或检索系统属性,例如重量,一切正常:
$product->getWeight(); // returns the correct weight
$product->setWeight(5.0); // correctly sets weight

我有两个自定义属性:google_product_categorympn。如果我尝试使用相同的技术修改它们,如下所示: 调用不会引发错误,但数据不会保存(是的,我在之后调用 $product->save())。
$product->setMpn('123ABC');
$product->setGoogleProductCategory('Electronics');

我究竟做错了什么?

4

1 回答 1

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;
}

保存产品时,需要将数据与原始数据进行比较。

如果从“管理”区域运行,它可以检索原始数据。如果您的脚本从“默认”区域运行,它将无法获取原始数据。

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

您可以通过更改Mage::app('default')Mage::app('admin') 或使用来做到这一点Mage::app()->setCurrentStore('admin');

于 2012-08-15T14:07:28.107 回答