2012-11-30 91 views
0

我正在做一个模块到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个小时。 任何帮助将不胜感激。

+0

我已经改变了我的代码来观察只是调用模型做攒动,现在我得到SQLSTATE [23000]:完整性约束违规:1048列“值”不能为空 – Guerra

+0

你可以添加你的观察员代码吗?你不应该在你的观察者中做任何保存,否则你会进入一个永无止境的循环 –

+0

哈哈,你说得通。 @ R.S,我甚至想到这一点。如果我在保存后保存观察者,他会一次又一次地调用相同的观测记录。哈哈也许这个完整性约束违规是由这个问题引起的,因为尝试多次保存产品可能会破坏数据库,现在我正在恢复数据库。 – Guerra

回答

2

你不应该在观察者(* _save_after)中做任何保存。

这将导致永无止境的循环

+0

Ty很突然R.S有时我们对明显的问题是盲目的,需要外界的人来看。 Ty男人。 – Guerra

相关问题