【问题标题】:What exactly does rendering / response strategy mean in Zend Framework 2 and how to use it?Zend Framework 2 中的渲染/响应策略究竟意味着什么以及如何使用它?
【发布时间】:2013-06-21 22:29:46
【问题描述】:

ZF2 文档描述了Creating and Registering Alternate Rendering and Response Strategies。我读过,但我不太明白如何使用策略。

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

【问题讨论】:

  • 抛开你的问题的范围,但你需要的实际上已经转换成一个ControllerPlugin,它被称为acceptableViewModelSelector()。这应该涵盖您需要的内容;)
  • 嘿山姆!谢谢你的提示!实际上我已经用AcceptableViewModelSelector 实现了它。但是现在我有两个麻烦: 1.如果Accept包含多个类型,请求会自动转发到PhpRenderer。 2. 我不能为 JSON / XML 设置script_paths(为了准备输出数据,s.here)。
  • 不太熟悉,抱歉。多个接受标头实际上不是我的区域:D

标签: view zend-framework2 webpage-rendering


【解决方案1】:

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

在更实际的情况下,策略基本上是一个事件监听器,通常是\Zend\EventManager\AbstractListenerAggregate 的具体实例,并且通常监听\Zend\Mvc\MvcEvent 各种事件,如EVENT_RENDEREVENT_RENDER_ERROR

监听器附加到\Zend\EventManager\EventManager,然后,使用上述\Zend\Mvc\MvcEvent访问MVC循环的所有基本资源(路由器、请求、响应、应用程序本身等),监听器可以检查应用程序的状态并更改其流程。

在 ZF2 官方文档提供的示例中,侦听器检查请求的接受标头,选择渲染器并相应地更改响应。

虽然有点老了,所以我建议看一些更好的例子,阅读框架提供的主要策略的代码,即\Zend\Mvc\View\Http\RouteNotFoundStrategy,它监听EVENT_DISPATCHEVENT_DISPATCH_ERROR来处理渲染 404 错误页面。

了解整个EventManager 的工作原理也非常重要。官方文档非常好,而且如果你用谷歌搜索的话,还有很多关于它的东西。

【讨论】:

  • 几点说明:“策略”通常涉及两个事件。第一个是“渲染”,第二个是“响应”。在“渲染”事件中,该策略通常会内省视图模型以确定它是否能够渲染它。如果是这样,它会返回一个渲染器。返回渲染器的第一个策略获胜。 “响应”事件用于获取渲染结果并将其推送到响应对象中。一个常见的用例是还注入特定的标头,例如 Content-Type。
猜你喜欢
  • 2018-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-23
  • 2021-08-01
  • 1970-01-01
  • 2015-10-29
  • 2020-06-05
相关资源
最近更新 更多