动作堆栈
动作堆栈插件可以管理一个请求堆栈,其操作象postDispatch插件。如果一个转发(例如,对另一个动作的调用)在当前请求对象中已经检测到,它不做任何事情。然而,如果没有检测到,它就检查堆栈并把最上面的一个取出,然后转发给由那个请求指定的动作。堆栈按照LIFO(后进先出)顺序处理。
你可以在任何时候用 Zend_Controller_Front::getPlugin('Zend_Controller_Plugin_ActionStack')从前端控制器获取插件。一旦你有插件对象,有很多机制你可以用来操作。
getRegistry() 和 setRegistry()。在内部, 动作堆栈 使用一个Zend_Registry 实例来存储堆栈。你可以用不同的注册表实例来代替或在这些访问器里获取。
getRegistryKey() 和 setRegistryKey()。当弹出堆栈时,这些可以用来识别使用哪个注册表键。缺省地值是'Zend_Controller_Plugin_ActionStack'。
getStack() 允许你全面地获取动作堆栈。
pushStack() 和 popStack() 分别允许你弹出和压栈。pushStack() 接受请求对象。
一个附加的方法,forward(),准备一个请求对象,并在前端控制器设置当前请求状态给提供的请求对象的状态,使它不可派遣(强制另一个派遣循环迭代)。