View 渲染/响应策略在Zend Framework 2中到底意味着什么?如何使用它?

View 渲染/响应策略在Zend Framework 2中到底意味着什么?如何使用它?,view,zend-framework2,webpage-rendering,View,Zend Framework2,Webpage Rendering,ZF2 docu描述了。我读过,但我真的不明白,如何使用策略 我有一个应用程序,它应该提供三种类型的输出(JSON、XML和HTML),具体取决于HTTP头accept。如何在这种情况下使用策略?Zend Framework 2中策略的松散概念是在MVC应用程序周期中触发事件时应用程序应该遵循的行为,实际上是事件驱动的 更实际地说,策略基本上是一个事件侦听器,通常是\Zend\EventManager\abstractListeneraggrate的一个具体实例,并且通常侦听\Zend\Mvc\

ZF2 docu描述了。我读过,但我真的不明白,如何使用策略


我有一个应用程序,它应该提供三种类型的输出(JSON、XML和HTML),具体取决于HTTP头accept。如何在这种情况下使用策略?

Zend Framework 2中策略的松散概念是在MVC应用程序周期中触发事件时应用程序应该遵循的行为,实际上是事件驱动的

更实际地说,策略基本上是一个事件侦听器,通常是
\Zend\EventManager\abstractListeneraggrate
的一个具体实例,并且通常侦听
\Zend\Mvc\MvcEvent
各种事件,如
事件渲染
事件渲染

侦听器连接到
\Zend\EventManager\EventManager
,然后使用前面提到的
\Zend\Mvc\MvcEvent
访问Mvc周期的所有基本资源(路由器、请求、响应、应用程序本身等),侦听器可以检查应用程序的状态并更改其流

在ZF2官方文档提供的示例中,侦听器检查请求的accept头,选择呈现器并相应地修改响应

不过它有点旧,所以我建议看一些更好的例子来阅读框架提供的主要策略的代码,即
\Zend\Mvc\View\Http\RouteNotFoundStrategy
,它侦听
事件调度
事件调度
来处理404错误页面的呈现


另外,了解整个
EventManager
的工作原理也非常重要。这方面的官方文档非常好,而且如果你在谷歌上到处搜索,会有很多关于它的东西。

稍微撇开你的问题,但是你所需要的实际上已经转换成了一个名为
ControllerPlugin的
ControllerPlugin。这应该涵盖您需要的内容;)嘿,山姆!谢谢你的提示!实际上,我已经用实现了它。但现在我有两个问题:1。如果
Accept
包含多种类型,则请求会自动转发到
PhpRenderer
。2.我无法为JSON/XML设置
script\u路径
(以便为输出预处理数据),抱歉,我不太熟悉。多个接受头并不是我真正的区域:DA夫妇注:“策略”通常处理两个事件。第一个是“渲染”,第二个是“响应”。在“渲染”事件中,该策略通常会内省视图模型,以确定它是否能够渲染它。如果是,则返回渲染器。返回渲染器的第一个策略获胜。“response”事件用于获取渲染结果并将其推送到响应对象中。一个常见的用例是也注入特定的头,例如内容类型。