【问题标题】:Magento observer doesn't seem to be catching eventsMagento 观察者似乎没有捕捉到事件
【发布时间】:2013-02-14 16:17:56
【问题描述】:

我遵循了一个教程,但我的观察者没有捕捉到事件。我知道事件正在触发,因为我正在记录它们。我在我的代码中找不到错误。

/local/Package/MODULE/etc/config.xml

<config>
<modules>
    <Package_MODULE>
        <version>0.1.0</version>
    </Package_MODULE>
</modules>

<global>
    <models>
        <module>
            <class>Package_MODULE_Model</class>
        </module>
    </models>
    <events>
            <catalog_product_gallery_upload_image_after>
                    <observers>
                            <module_model_upload>
                                    <type>model</type>
                                    <class>module/observer</class>
                                    <method>printTestMessage</method>
                            </module_model_upload>
                    </observers>
            </catalog_product_gallery_upload_image_after>
    </events>

</global>
</config>

/local/Package/MODULE/Model/Observer.php

<?php

class Package_MODULE_Model_Observer{
    public function printTestMessage(Varien_Event_Observer $observer){
             Mage::log("TESTING ", null, 'events.log');  //<--same log statement I'm using to test the events firing
    }
}

/etc/modules/Package_MODULE.xml

<config>
<modules>
    <Package_MODULE>
        <active>true</active>
        <codePool>local</codePool>
    </Package_MODULE>
</modules>
</config>

EDIT2:此错误显示在 system.log 中:

2013-02-14T17:10:21+00:00 ERR (3): Notice: Uninitialized string offset: 3  in /opt/bitnami/apps/magento/htdocs/includes/src/Varien_File_Uploader.php on line 538
2013-02-14T17:10:21+00:00 ERR (3): Warning: include(/opt/bitnami/apps/magento/htdocs/includes/src/Package_MODULE_Model_Observer.php): failed to open stream: No such file or directory  in /opt/bitnami/apps/magento/htdocs/includes/src/Varien_Autoload.php on line 93
2013-02-14T17:10:21+00:00 ERR (3): Warning: include(): Failed opening '/opt/bitnami/apps/magento/htdocs/includes/src/Package_MODULE_Model_Observer.php' for inclusion (include_path='/opt/bitnami/apps/magento/htdocs/includes/src:.:/opt/bitnami/php/lib/php')  in /opt/bitnami/apps/magento/htdocs/includes/src/Varien_Autoload.php on line 93

【问题讨论】:

  • XML 中的模型定义应该只包含模块名称,而不是 module_model.. &lt;module&gt; 而不是 &lt;module_model&gt;
  • @KalpeshMehta 我做出了改变。仍然没有任何反应。
  • 一些愚蠢的问题,但是:- 你确定日志已启用吗? - events.log 文件是否具有可写权限?如果否,日志目录是否可写以允许创建新文件? - 你试过简单的 Mage::log('test'); ?
  • @dagfr 是的,日志记录正在工作。我在 system.log 中注意到了一些东西。我会在问题中发布。
  • 好的,我们在您的错误日志中注意到两件事。 1 编译已启用,您是否重新编译了代码? 2.你看到@KalpeshMetha 2次Model描述的错误

标签: magento


【解决方案1】:

检查包含警告...这是由于启用了编译器但您的类尚未编译。

我回答这个问题的次数可能比我数不清:disable the compiler or recompile

【讨论】:

  • 谢谢!关于编译器的问题:我需要在网站上线时启用它吗?
  • @swl1020:您不需要,但出于性能原因(尤其是在将 include/src 挂载为 tmpfs 时)可能会有好处。
  • 我明白了。所以,在开发的时候,最好禁用,等到发布的时候,重新启用并重新编译?
  • 是的,不要在每天进行更改时编译。编译一次稳定。
【解决方案2】:

您的观察者配置中有错误的类名。 &lt;class&gt;module_model/observer&lt;/class&gt; 不希望 _model 在其中。模型Package_MODULE_Model_Observer 的类别名是module/observer

【讨论】:

  • 感谢您的回答。该错误实际上不在我的代码中。我对代码进行了更改,然后来到这里反映更改,但忘记更新该部分。不过谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多