Zend控制器的predispatch方法

Mou*_*hna 5 model-view-controller zend-framework controller request

我正在读这篇文章以了解zend的MVC请求生命周期.但我想不出在zend中我会使用控制器的predispatch方法的任何情况,对于我想在控制器的操作之前执行的代码,不是init方法.

应该在控制器的predispatch中应该是什么,而不是init.

你能给我举个例子吗 ?

dre*_*010 11

请参阅Zend_Controller_Action - 对象初始化和以下部分前后发送挂钩.他们都详细介绍了两者和动作控制器本身.

init()更多用于设置控制器对象并执行可用于所有操作的初始化.由于init()之前运行preDispatch(),您设置的任何内容init()都可以preDispatch()使用.虽然可以转发或重定向init(),但最好这样做,preDispatch()因为它在分派控制器操作之前运行.

从手册:

注意:init()与preDispatch()的用法 它们之间有什么区别(init和preDispatch),以及你在每个中采取什么操作?

所述的init()方法主要用于延伸的构造.通常,构造函数应该只设置对象状态,而不是执行太多逻辑.这可能包括初始化控制器中使用的资源(例如模型,配置对象等),或分配从前端控制器,引导程序或注册表检索的值.

preDispatch()方法的方法也可以用来设置对象或环境(例如,视图,动作助手等)的状态,但其主要目的是使有关请求的动作是否应该派遣决定.如果没有,那么你应该_forward()到另一个动作,或抛出异常.

注意:init()执行时,_forward()实际上无法正常工作,这是两种方法意图的形式化.