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の 2 つのカスタム属性があります。同じ手法を使用してそれらを変更しようとすると 、呼び出しはエラーをスローしませんが、データは保存されません (はい、後で $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;
}

製品を保存するときは、データをorigdataと比較する必要があります。

'admin'領域から実行すると、origdataを取得できます。スクリプトを「デフォルト」領域から実行すると、origdataを取得できなくなります。

そのため、開発者モードを使用している場合、コードのある時点で、スクリプトが破損する警告がスローされます(エラーがスローされなかったと言ったため、間違っている可能性があります)

に変更Mage::app('default')するMage::app('admin') か、を使用してそれを行うことができますMage::app()->setCurrentStore('admin');

于 2012-08-15T14:07:28.107 に答える