Magento观察者进入无限循环

时间:2011-08-26 12:03:33

标签: magento

提前致谢

我已经创建了一个观察者,我需要使用观察者设置属性值,请在我点击保存按钮时检查以下配置和观察者文件,观察者进入无尽的状态。我只想用这个观察者设置属性值

<catalog_product_save_after>
                <observers>
                    <zaptech_save_product_data>
                        <type>singleton</type>
                        <class>upload/observer_product</class>
                        <method>saveTabData</method>
                    </zaptech_save_product_data>
                </observers>
            </catalog_product_save_after>

我的观察员处理程序代码在这里请检查

 public function saveTabData(Varien_Event_Observer $observer)
    { 

        $productModel=Mage::registry('current_product')                
                      ->setTestid('1')
                      ->setTestname('Jitendra')
                      ->save();

    }

这段代码的问题在于观察进入无限循环

请帮助

再次感谢,

Jitendra Dhobi。

以下是我自己的问题的回答我将事件名称从catalog_product_save_after替换为catalog_product_save_before ..

<catalog_product_save_before>
                <observers>
                    <zaptech_save_product_data>
                        <type>singleton</type>
                        <class>upload/observer_product</class>
                        <method>saveTabData</method>
                    </zaptech_save_product_data>
                </observers>
</catalog_product_save_before>

并从

下面的观察者文件中删除save()方法
public function saveTabData(Varien_Event_Observer $observer)
        { 

            $productModel=Mage::registry('current_product');                
            $productModel->setTestid('1');
            $productModel->setTestname('Jitendra');


        }

欢呼!!! ...

1 个答案:

答案 0 :(得分:0)

您可以使用注册表来确定自定义产品保存并防止循环。

public function saveTabData(Varien_Event_Observer $observer)
{
    if(Mage::registry('customUpdate')) return;
    Mage::register('customUpdate', true);

    $productModel=Mage::registry('current_product')
        ->setTestid('1')
        ->setTestname('Jitendra')
        ->save();

}