产品不会保存。永远处理

时间:2012-11-30 11:05:43

标签: php magento magento-1.5

我正在为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个小时。 任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:2)

您不应该在观察者中进行任何保存(* _save_after)。

这将导致永无止境的循环