我正在为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-&gt; 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个小时。 任何帮助都会受到赞赏。
答案 0 :(得分:2)
您不应该在观察者中进行任何保存(* _save_after)。
这将导致永无止境的循环