PHP Zend控制器插件被调用两次

时间:2011-07-19 23:46:49

标签: php zend-framework

我注意到我的插件被调用了两次。我知道这是因为在我的ViewSetup插件中它注册了标题,标题包含两次相同的内容。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

您最有可能重复拨打preDispatchpostDispatch的来电。对于尚未调度的每个请求,在Zend_Controller_Front::dispatch的循环内调用这些方法。这意味着将dispatch设置为false并且甚至在控制器中使用$this->_forward的克隆请求将导致另外执行这些方法。

尝试更改为routeStartuprouteShutdown。这些通常只对应用程序运行一次。如果你绝对需要运行pre/postDispatch,你应该通过计数或保留原始请求的副本并检查它是否已经在你的插件中来跟踪你的插件。

另一种可能性是你添加了两次插件。如果您通过application.ini添加并且在Bootstrap或其他脚本中也有registerPlugin,则可能会出现这种情况。如果您意外地添加了两次插件,那么计算运行pre/postDispatch的次数将无济于事。

答案 1 :(得分:2)

这是由于抛出异常,在初始请求之后调用了错误控制器。

答案 2 :(得分:0)

debug_backtrace()转储到文件中,您可以看到每个来电的来源。