我正在尝试在它作为字符串发送到浏览器之前访问最终的xhtml输出.操作和插件的postDispatch()方法似乎为时尚早.当我Zend_Controller_Front::dispatch()
使用调试器逐步执行方法时,我可以$this->_response->sendResponse()
通过添加监视表达式在最后调用之前作为字符串访问所需的输出$this->getResponse()->getBody()
.但是,似乎没有专门的钩子可以直接进入那里.我需要最终的响应体作为字符串,以便将其发送到Prince XML以生成pdf.有人知道这样做的优雅方式吗?
谢谢,阿德里安
该Zend_Controller_Front
插件挂钩的(从以下位置):
routeStartup()
在Zend_Controller_Front
调用路由器之前调用,以评估针对已注册路由的请求.
routeShutdown()
在路由器完成路由请求后调用.
dispatchLoopStartup()
在Zend_Controller_Front
进入其调度循环之前被调用.
preDispatch()
在调度程序调度操作之前调用.此回调允许代理或过滤器行为.通过改变请求并重置其调度标志(via Zend_Controller_Request_Abstract::setDispatched(false)
),可以跳过和/或替换当前动作.
postDispatch()
在调度员调度操作后调用.此回调允许代理或过滤器行为.通过更改请求并重置其调度标志(via Zend_Controller_Request_Abstract::setDispatched(false)
),可以指定新的操作以进行调度.
dispatchLoopShutdown()
在Zend_Controller_Front退出其调度循环后调用.
dispatchLoopShutdown()
你的钩子也是如此- 这Zend_Controller_Front::dispatch()
是在返回或发送响应之前的最后一件事.
另一种选择可能是,即使它们是为完全不同的东西而设计的,也可以使用Zend_View
过滤器.可以将这些过滤器添加到Zend_View
-instance并调用Zend_View::render()
.过滤器只是一个类的实例,它提供了一个filter($buffer)
返回过滤的方法$buffer
.但是将这个界面用于与过滤 ouptut 无关的东西,实际上似乎不是正确的方法.
我个人认为,一个dispatchLoopShutdown()
-plugin将是你要走的路.