Magento 1.9.2.1 - 观察者:catalog_product_save_before 不触发
Magento 1.9.2.1 - Observer: catalog_product_save_before doesn't fire
在决定写这个问题之前,我已经搜索了不知道多少 Google 页,而且我知道 Marius and Alan Storm 已经有一些非常相似的问题的非常好的答案,但我不幸的是,我无法解释为什么我的观察者没有按预期开火。
这不是我第一次玩观察者,我已经从管理员和手动刷新缓存 var/cache 文件夹,我尝试了不同的工作语法来调用模型(complete_model_path_with 下划线,module/model,大写,小写)。我有其他观察员每天都在同一个安装上工作正常,我试图以完全相同的方式进行,但没有成功。我也试过用单例而不是模型来调用。我已经尝试了三个范围视图(全局、前端和 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>
app/code/local/NameSpace/Module/Model/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;
}
}
更新
app/etc/modules/NameSpace_Module.xml
<?xml version="1.0"?>
<config>
<modules>
<NameSpace_Module>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
<depends>
<Mage_Catalog />
</depends>
</NameSpace_Module>
</modules>
</config>
我什至尝试在代码中添加随机字符来引发致命错误,但从未调用过。这可能是我的一个非常简单的错误,我所知道的是我仔细地忽略了我的代码,但我似乎找不到问题所在。
请尝试在给出答案之前发表评论,因为我已经尝试了很多解决方案,也许你已经尝试过了。
非常感谢您的帮助,我们将不胜感激任何建议!
有些时候我在问自己;
-Am I really a developer?
在这些时刻,我所有的复杂代码都经过验证并以所有可能的方式完全发挥作用,除了一些非常基本和小的东西。
在验证我的观察者模型是否真的存在于 Magento 内部之后:
require_once('/home/user/public_html/app/Mage.php');
Mage::init();
$observer = Mage::getModel('module/observer');
确实如此,我也意识到输出很简单text...
在任何 php 代码之前添加 <?php
总是一个好主意!
在决定写这个问题之前,我已经搜索了不知道多少 Google 页,而且我知道 Marius and Alan Storm 已经有一些非常相似的问题的非常好的答案,但我不幸的是,我无法解释为什么我的观察者没有按预期开火。
这不是我第一次玩观察者,我已经从管理员和手动刷新缓存 var/cache 文件夹,我尝试了不同的工作语法来调用模型(complete_model_path_with 下划线,module/model,大写,小写)。我有其他观察员每天都在同一个安装上工作正常,我试图以完全相同的方式进行,但没有成功。我也试过用单例而不是模型来调用。我已经尝试了三个范围视图(全局、前端和 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>
app/code/local/NameSpace/Module/Model/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;
}
}
更新
app/etc/modules/NameSpace_Module.xml
<?xml version="1.0"?>
<config>
<modules>
<NameSpace_Module>
<active>true</active>
<codePool>local</codePool>
<version>0.1.0</version>
<depends>
<Mage_Catalog />
</depends>
</NameSpace_Module>
</modules>
</config>
我什至尝试在代码中添加随机字符来引发致命错误,但从未调用过。这可能是我的一个非常简单的错误,我所知道的是我仔细地忽略了我的代码,但我似乎找不到问题所在。
请尝试在给出答案之前发表评论,因为我已经尝试了很多解决方案,也许你已经尝试过了。
非常感谢您的帮助,我们将不胜感激任何建议!
有些时候我在问自己;
-Am I really a developer?
在这些时刻,我所有的复杂代码都经过验证并以所有可能的方式完全发挥作用,除了一些非常基本和小的东西。
在验证我的观察者模型是否真的存在于 Magento 内部之后:
require_once('/home/user/public_html/app/Mage.php');
Mage::init();
$observer = Mage::getModel('module/observer');
确实如此,我也意识到输出很简单text...
在任何 php 代码之前添加
<?php
总是一个好主意!