在决定写这个问题之前,我已经搜索过不知道有多少个Google页面,而且我知道Marius和Alan Storm已经对非常相似的问题给出了非常好的答案,但是很遗憾,我无法揭开为什么我的观察者没有开火。
这不是我第一次与观察者一起玩,而是从admin手动刷新了缓存,并手动从var / cache文件夹中删除了缓存,我尝试了不同的工作语法来调用模型(complete_model_path_with下划线,模块/模型,大写,小写) )。我有其他观察员每天都在同一安装上正常工作,我尝试以完全相同的方式进行操作,但未成功。我也尝试用单例而不是模型来呼叫。我尝试了三个作用域视图(全局,前端和adminhtml)。我一直在寻找任何直接或间接的核心覆盖,仍然有可能错过一个隐藏在其他模块中的模块,但是我几乎总是使用尊重大多数Magento标准的知名开发人员的模块。
我的代码有一部分:
app / code / local / NameSpace / Module / etc / config.xml
<global>
<models>
<module>
<class>NameSpace_Module_Model</class>
<resourceModel>module_mysql4</resourceModel>
</module>
</models>
<events>
<catalog_product_save_before>
<observers>
<module>
<type>singleton</type>
<class>NameSpace_Module_Model_Observer</class>
<method>catalogProductSaveBefore</method>
</module>
</observers>
</catalog_product_save_before>
</events>
</global>
Run Code Online (Sandbox Code Playgroud)
应用程序/代码/本地/ NameSpace /模块/模型/Observer.php
class NameSpace_Module_Model_Observer
{
public function catalogProductSaveBefore(Varien_Event_Observer $observer)
{
$product = $observer->getEvent()->getProduct();
file_put_contents("OBSERVER.TXT","FIRED");
echo "hello";
exit();
return $this;
}
}
Run Code Online (Sandbox Code Playgroud)
app / etc / modules / NameSpace_Module.xml
<?xml version="1.0"?>
<config>
<modules>
<NameSpace_Module>
<active>true</active> …Run Code Online (Sandbox Code Playgroud)