Zend framework 控制器插件中未调用preDispatch()

Zend framework 控制器插件中未调用preDispatch(),zend-framework,Zend Framework,插件已在/configs/application.ini文件中注册。ZF确实看到了这一点,因为init()函数工作得非常好。但我在preDispatch中投入的任何东西似乎都不起作用 另外,这个插件的唯一目的是从URL中的参数确定使用什么语言,并将Zend_语言环境设置为它。因此,我不再需要在任何控制器或视图中执行此操作,而是依赖Zend_Locale、Zend_Translate等。但我无法在插件的init()中执行此操作,preDispatch()根本不起作用:/ZF缺少适当的文档开始让我发

插件已在/configs/application.ini文件中注册。ZF确实看到了这一点,因为init()函数工作得非常好。但我在preDispatch中投入的任何东西似乎都不起作用


另外,这个插件的唯一目的是从URL中的参数确定使用什么语言,并将Zend_语言环境设置为它。因此,我不再需要在任何控制器或视图中执行此操作,而是依赖Zend_Locale、Zend_Translate等。但我无法在插件的init()中执行此操作,preDispatch()根本不起作用:/ZF缺少适当的文档开始让我发疯

问题是我需要在application.ini中添加一行:

class My_Plugin extends Zend_Controller_Plugin_Abstract
{

    public function init()
    {
         print 'this is working just fine';
    }

    public function  preDispatch( Zend_Controller_Request_Abstract $request )
    {
        Zend_Debug::dump($request);
        print 'why is it not working';
        exit;
        die(':(');   // not dieing either     
    }
}

现在一切都好了

为什么要检查每个动作的语言?尝试routeStartup()而不是preDispatch(),routeStartup()也会被忽略:(我发现,如果某个特定方法的相关事件在插件注册时已通过,则不会调用该方法。这是否相关?application.ini何时启动?问题是我需要在application.ini中添加一行:resources.frontController.plugins.myplugin=plugins\u My\u plugin,现在一切正常。感谢您的建议。)告诉routeStartup(),你应该回答这个问题,然后把它标记为正确的答案,以供以后的其他人回答。所以我猜“插件在/configs/application.ini文件中注册”并不完全正确;-)是的。我的印象是,仅仅写resources.myplugin=就足够注册它了……在其他情况下它似乎是有效的。对此表示抱歉。
resources.frontController.plugins.myplugin = Plugins_My_Plugin