我正在做一个模块到Magento我的模块具有与magento Crosssell本机函数相同的功能。 我有这个产品网格,用户选择一些复选框将这些产品与主要产品相关联。 一切都好。产品不会保存。永远处理
但是,我已经创建一个自定义属性,以保存该产品的ID和使观察员“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个小时。 任何帮助将不胜感激。
我已经改变了我的代码来观察只是调用模型做攒动,现在我得到SQLSTATE [23000]:完整性约束违规:1048列“值”不能为空 – Guerra
你可以添加你的观察员代码吗?你不应该在你的观察者中做任何保存,否则你会进入一个永无止境的循环 –
哈哈,你说得通。 @ R.S,我甚至想到这一点。如果我在保存后保存观察者,他会一次又一次地调用相同的观测记录。哈哈也许这个完整性约束违规是由这个问题引起的,因为尝试多次保存产品可能会破坏数据库,现在我正在恢复数据库。 – Guerra