Php 以编程方式调用目录产品保存不会调用Magento中的observer?
我创建了观察者,以便在产品保存时在表中插入产品属性Php 以编程方式调用目录产品保存不会调用Magento中的observer?,php,zend-framework,magento-1.7,Php,Zend Framework,Magento 1.7,我创建了观察者,以便在产品保存时在表中插入产品属性 <adminhtml> <events> <catalog_product_save_after> <observers> <Test_price_save_product_data> <type>singleton<
<adminhtml>
<events>
<catalog_product_save_after>
<observers>
<Test_price_save_product_data>
<type>singleton</type>
<class>Magetest_test_Model_Observer</class>
<method>saveProductAttr</method>
</Test_price_save_product_data>
</observers>
</catalog_product_save_after>
</events>
</adminhtml>
当我运行脚本时,它会逐个保存产品,但不会触发“observer”之后的“catalog\u product\u save\u”。因为我需要使用此observer在另一个表中分别插入7000个产品属性
我在这件事上做错了什么?敬请告知。观察员没有开火,因为Magento从未加载应用程序的
区域。至于解决方案,我们可以尝试将您的观察者移动到
区域。只有
事件在运行命令行脚本时才会触发
<global>
<events>
<catalog_product_save_after>
<observers>
<Test_price_save_product_data>
<type>singleton</type>
<class>Magetest_test_Model_Observer</class>
<method>saveProductAttr</method>
</Test_price_save_product_data>
</observers>
</catalog_product_save_after>
</events>
</global>
独生子女
Magetest_测试_模型_观察者
saveProductAttr
这可能是因为产品未修改。在Mage/Core/Model/Abstract.php文件中,函数“save()”包含以下代码
如果(!$this->\u hasModelChanged()){
退还$this;
}
如果编辑该产品的任何字段:
setData(“名称”、“测试”)代码>它会工作。或者更好的$product->setData(“\u hasDataChanges”,true);
<global>
<events>
<catalog_product_save_after>
<observers>
<Test_price_save_product_data>
<type>singleton</type>
<class>Magetest_test_Model_Observer</class>
<method>saveProductAttr</method>
</Test_price_save_product_data>
</observers>
</catalog_product_save_after>
</events>
</global>