我注意到我的插件被调用了两次。我知道这是一个事实,因为在我的ViewSetup插件它注册标题,标题包含相同的内容两次。什么好主意吗?
您很可能重复对preDispatch
或postDispatch
的调用。这些方法在Zend_Controller_Front::dispatch
的循环中被调用,用于尚未分派的每个请求。这意味着将调度设置为false的克隆请求,甚至在控制器中使用$this->_forward
,将导致这些方法的另一次执行。
尝试更改为routeStartup
或routeShutdown
。这些通常只会为应用程序运行一次。如果你绝对需要运行pre/postDispatch
,你应该在你的插件中保持跟踪,或者用计数或保留原始请求的副本,并检查它是否已经在你的插件中。
另一种可能性是你添加了两次插件。如果您通过application.ini添加,并且在Bootstrap或其他脚本中也有registerPlugin
,则可能会出现这种情况。如果您无意中添加了两次插件,那么记录运行pre/postDispatch
的次数是没有帮助的。
这是由于抛出了一个异常,该异常在初始请求之后随后调用了errorcontroller。
将debug_backtrace()
转储到文件中,您可以看到每个调用来自何处。