Magento 1.9.2.1-观察者:catalog_product_save_before不会触发

ElG*_*ito 2 php events observers magento-1.9

在决定写这个问题之前,我已经搜索过不知道有多少个Google页面,而且我知道MariusAlan 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>
      <codePool>local</codePool>
      <version>0.1.0</version>
      <depends>
          <Mage_Catalog />
      </depends>
    </NameSpace_Module>
  </modules>
</config>
Run Code Online (Sandbox Code Playgroud)

我什至试图在代码中添加随机字符来引发致命错误,但从未调用过。这可能是我的一个非常简单的错误,我所知道的是我小心翼翼地忽略了我的代码,而且似乎找不到问题。

请先发表评论,然后再给出答案,因为我已经尝试过许多解决方案,也许您已经尝试过。

预先非常感谢您的帮助,任何建议将不胜感激!

ElG*_*ito 5

有些时候我在问自己。

-我真的是开发人员吗?

在这些时刻,我的所有复杂代码都经过了验证,并以所有可能的方式发挥了全部功能,除了一些基本和小巧的东西。

在验证我的观察者模型是否确实存在于Magento中之后:

require_once('/home/user/public_html/app/Mage.php');

Mage::init();

$observer = Mage::getModel('module/observer');
Run Code Online (Sandbox Code Playgroud)

的确,我还意识到输出是简单的文本 ...

<?php在任何php代码之前添加总是一个好主意!