【问题标题】:Magento event observer not working on some machinesMagento 事件观察器无法在某些机器上工作
【发布时间】:2011-12-07 00:54:01
【问题描述】:

我似乎无法弄清楚为什么我的事件观察者在我的机器(和其他同事)上工作,而不是在办公室的其他机器上工作。

例如,我有一个监听事件的观察者:

controller_action_postdispatch_adminhtml_process_reindexProcess

我的代码检测到事件并运行一些代码。当我运行重新索引过程时,我的代码就会执行。当办公室中的某些其他机器运行重新索引时,要么没有触发事件,要么我的观察者没有检测到它。

为什么计算机或用户点击管理面板中的重新索引按钮会改变触发或观察事件的方式?

我已经尽我所能研究了这个问题并找到了这篇文章。

Events not firing/or observer not working in magento

但这似乎与不同的安装有关。在我的问题中,它适用于某些计算机上的给定安装,而不适用于其他计算机,所以我觉得这篇文章没有直接相关性。

这个问题快把我逼疯了。任何帮助将不胜感激。

【问题讨论】:

    标签: php events magento controller mage


    【解决方案1】:

    你可以尝试很多巫术,但最终你不得不从这里开始

    #File: app/Mage.php
    
    public static function dispatchEvent($name, array $data = array())
    {
        Varien_Profiler::start('DISPATCH EVENT:'.$name);
        $result = self::app()->dispatchEvent($name, $data);
        #$result = self::registry('events')->dispatch($name, $data);
        Varien_Profiler::stop('DISPATCH EVENT:'.$name);
        return $result;
    }
    

    并调试/记录您的事件的执行,以确定它在某些情况下未触发的原因。

    评论的具体回答

    谢谢!我能够看到,从复选标记重新索引会调用不同的事件,而不是简单地单击重新索引过程文本。调试的一个痛苦的长错误,但一个简单的解决方案。再次感谢! ——

    【讨论】:

    • 是的,放 Mage::log($name);并简单地比较两台计算机的输出。
    • 谢谢!我能够看到,从复选标记重新索引会调用不同的事件,而不是简单地单击重新索引过程文本。调试的一个痛苦的长错误,但一个简单的解决方案。再次感谢!
    【解决方案2】:

    您确定两台计算机上的文件状态相同吗? 也许您忘记传输/签入 MyFirm_MyModule.xml 并且您的模块未处于活动状态?

    计算机是否使用不同的操作系统?如果您使用的是 Windows,而您的同事使用的是 Linux,则可能是模块名称的大写/小写问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 2011-04-24
      • 2017-10-15
      • 2016-01-21
      • 2011-10-05
      • 1970-01-01
      相关资源
      最近更新 更多