Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework:如何在最终视图输出之前进入它';是否已发送到浏览器?_Php_Zend Framework_Pdf_Rendering - Fatal编程技术网

Php Zend Framework:如何在最终视图输出之前进入它';是否已发送到浏览器?

Php Zend Framework:如何在最终视图输出之前进入它';是否已发送到浏览器?,php,zend-framework,pdf,rendering,Php,Zend Framework,Pdf,Rendering,我试图在最终的xhtml输出作为字符串发送到浏览器之前访问它。操作和插件的postDispatch()方法似乎还为时过早。当我使用调试器单步执行Zend\u Controller\u Front::dispatch()方法时,我可以在最后调用$this->\u response->sendResponse()之前,通过添加一个监视表达式$this->getResponse()->getBody(),以字符串的形式访问所需的输出。然而,这里似乎并没有专门的钩子。我需要最终的响应体作为字符串,以便将

我试图在最终的xhtml输出作为字符串发送到浏览器之前访问它。操作和插件的postDispatch()方法似乎还为时过早。当我使用调试器单步执行
Zend\u Controller\u Front::dispatch()
方法时,我可以在最后调用
$this->\u response->sendResponse()
之前,通过添加一个监视表达式
$this->getResponse()->getBody()
,以字符串的形式访问所需的输出。然而,这里似乎并没有专门的钩子。我需要最终的响应体作为字符串,以便将其发送到Prince XML以生成pdf。有人知道一种优雅的方法吗


谢谢,Adrian

Zend\u Controller\u Front插件挂钩如下(来自):

  • routeStartup()
    Zend\u Controller\u Front
    调用路由器以根据注册的路由评估请求之前被调用
  • routeShutdown()
    在路由器完成请求路由后调用
  • dispatchLoopStartup()
    Zend\u Controller\u Front
    进入其调度循环之前被调用
  • preDispatch()
    在调度程序调度操作之前被调用。此回调允许代理或筛选器行为。通过更改请求并重置其调度标志(通过
    Zend\u Controller\u request\u Abstract::setDispatched(false)
    ),可以跳过和/或替换当前操作
  • postDispatch()
    在调度程序调度操作后调用。此回调允许代理或筛选器行为。通过更改请求并重置其调度标志(通过
    Zend\u Controller\u request\u Abstract::setDispatched(false)
    ),可以为调度指定新操作
  • dispatchLoopShutdown()
    在Zend\u Controller\u Front退出其调度循环后调用。
所以
dispatchLoopShutdown()
是你的钩子-这是
Zend\u Controller\u Front::dispatch()
在返回或发送响应之前做的最后一件事

另一种选择是,即使它们是为完全不同的东西而设计的,也可以使用
Zend_View
过滤器。这些过滤器可以添加到
Zend_视图
-实例中,并在
Zend_视图::render()中调用。过滤器只是一个类的实例,它提供了一个
过滤器($buffer)
-方法,该方法返回过滤后的
$buffer
。但是,将此接口用于与筛选ouptut无关的内容,实际上似乎不是正确的方法


我个人认为,一个
dispatchLoopShutdown()
-插件将是一个不错的选择。

这里有一个关于如何使用视图过滤器的示例


这是一个完美的答案,非常感谢!我向SO的无限智慧鞠躬:)注意,我们不愿意这样做,所以答案应该是寻找解决方案的终点(而不是参考文献的另一个中途停留,随着时间的推移往往会变得陈旧)。请考虑在这里添加一个独立的概要,将链接作为参考。