我正在为Magento做一个模块,我的模块具有与magento相同的Crosssell原生函数功能 . 我有这个产品网格,用户选择一些复选框将这些产品与主产品相关联 . 一切都好 .
但是,我创建了一个自定义属性来保存此产品的ID,并将一个Observer设为'catalog_product_save_after'事件:
<events>
<catalog_product_save_after>
<observers>
<brindeproduto_save_product_data>
<type>singleton</type>
<class>brindeproduto/observer</class>
<method>saveProductTabData</method>
</brindeproduto_save_product_data>
</observers>
</catalog_product_save_after>
</events>
在我的saveProductTabData上,我按照请求中的ID加载主产品,并将选择产品的IDS放在我的自定义属性上,如“1,2,3,4,5,6” .
好的,但是当我做$ product-> save();我的浏览器无限加载,没有任何错误或异常 . 观察者的代码很简单 .
$product = Mage::getModel('catalog/product')->load($product_id);
//some logical Specific information that is not in question now.
$product->save();
而已 .
我尝试调试保存功能并获得一些有趣的结果 . 在Mage_Core_Model_Abstract函数save()中,我把一些骰子放在代码的一部分上,然后得到所有的代码 . 这段代码是Magento 1.5社区中保存第330行的功能的一部分 .
if ($dataCommited) {
$this->_afterSaveCommit();
}
return $this;
这是功能的最后一行 . 我回来之前就死了 .
if ($dataCommited) {
$this->_afterSaveCommit();
}
die('test');
return $this;
我已经死了 . 但回来之前别无所求 . 有些身体有什么发生的意识?失去了5个小时 . 任何帮助都将受到赞赏 .
1 回答
你不应该在观察者中进行任何保存(* _save_after) .
这将导致永无止境的循环