我认为执行的顺序是init(),preDispatch(),然后调用action()。
最佳答案
首先为preDispatch()
实例调用Zend_Controller_Plugin_Abstract
。在这里,您具有请求和响应对象,因此您可以过滤请求或使用请求中的信息进行一些准备。
接下来,将init()
的Zend_Controller_Action
作为构造函数的一部分进行调用。它可以帮助您初始化 Controller ,而不必重写并重复构造函数的签名(Zend_Controller_Action::__contruct()
)。
在此调用 Controller 的preDispatch()
方法。您可以调用$request->setDispatched(false)
跳过当前操作-不确定是否可以在init()
中执行此操作
然后将调用您的操作方法(例如viewAction()
)。在这里,您可以进行常规工作,例如从模型中获取内容并填充 View 。
因此,区别现在应该很清楚:
preDispatch()
之外还有routeStartup
和others),init
或preDispatch()
,几乎什么都没有-执行
preDispatch()
,如果尚未调用$request->setDispatched(false)
,则执行该操作。