当前位置:  开发笔记 > 编程语言 > 正文

Zend Framework:如何在将最终视图输出发送到浏览器之前点击它?

如何解决《ZendFramework:如何在将最终视图输出发送到浏览器之前点击它?》经验,为你挑选了1个好方法。

我正在尝试在它作为字符串发送到浏览器之前访问最终的xhtml输出.操作和插件的postDispatch()方法似乎为时尚早.当我Zend_Controller_Front::dispatch()使用调试器逐步执行方法时,我可以$this->_response->sendResponse()通过添加监视表达式在最后调用之前作为字符串访问所需的输出$this->getResponse()->getBody().但是,似乎没有专门的钩子可以直接进入那里.我需要最终的响应体作为字符串,以便将其发送到Prince XML以生成pdf.有人知道这样做的优雅方式吗?

谢谢,阿德里安



1> Stefan Gehri..:

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将是你要走的路.

推荐阅读
手机用户2402851335
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有