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


PHP Zend Controller Plugin getting called twice

我注意到我的插件被调用了两次。我知道这是一个事实,因为在我的ViewSetup插件它注册标题,标题包含相同的内容两次。什么好主意吗?

您很可能重复对preDispatchpostDispatch的调用。这些方法在Zend_Controller_Front::dispatch的循环中被调用,用于尚未分派的每个请求。这意味着将调度设置为false的克隆请求,甚至在控制器中使用$this->_forward,将导致这些方法的另一次执行。

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

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

这是由于抛出了一个异常,该异常在初始请求之后随后调用了errorcontroller。

debug_backtrace()转储到文件中,您可以看到每个调用来自何处。