【问题标题】:When should AcceptableViewModelSelector and Rendering / Response Strategies be used in Zend Framework 2?什么时候应该在 Zend Framework 2 中使用 AcceptableViewModelSelector 和渲染/响应策略?
【发布时间】:2013-06-25 12:44:47
【问题描述】:

如果需要 JSON、XML 等输出格式,可以使用 AcceptableViewModelSelector Controller Plugin 或 / 和 (?) alternate rendering / response strategies

什么时候应该应用一个,什么时候应用另一个(以及什么时候组合)?

它们可以/应该合并吗?

【问题讨论】:

  • 能否请您评论您的反对意见。

标签: view zend-framework2 rendering zend-controller-plugin


【解决方案1】:

嗯,策略基本上是听众。根据控制器操作返回的模型类型来提供操作的侦听器。如果您返回ViewModelPhpRendererStrategy 将发生。如果您返回 JsonModel,则 JsonStrategy 会做这件事,如果您返回 FeedModel,则 FeedStrategy 会做这件事。

但是,这些策略仅在注册后才适用。因此,如果您在没有注册 JsonStrategy 的情况下返回 JsonModel,则不会发生任何事情。

AcceptableViewModelSelector 的存在是为了更轻松地访问和处理不同的模型格式,具体取决于接受标头。它有助于使事情变得更容易,不多也不少。

策略,您也可以注册自己的策略。有些模块有一个 PdfStrategy,如果你告诉它,它会呈现一个 PDF 文档。

根据您的问题稍微调整一下:

  • 从 ZF 2.0 开始就制定了策略
  • 控制器插件 AVMS 仅在 ZF 2.1 中的某个时候出现,只是为了让事情变得更简单 - 这就是为什么它只不过是一个“插件”;)

如果这不能真正涵盖你的问题,我对如何回答你很不自信^^

【讨论】:

  • 这意味着,如果我需要取决于Accept 值的几种输出类型,我必须使用AcceptableViewModelSelector 和策略的组合?方法是:(0. 实施策略,如果需要自定义策略。) 1. 注册策略; 2.用AcceptableViewModelSelector检测Accept值; 3.(在Controller动作/REST方法中)返回一个ViewModel对象,由注册策略之一支持; 4.Zend\View\View会根据/使用策略处理ViewModel对象。我是否正确理解了这种方法?
  • 我认为你做对了,即使你想得太复杂了。 AVMS 只是自动执行“accept-header-to-rendering-strategy-matching”的助手;)在后台,所有 AVMS 所做的就是使用标头并选择适当的渲染策略以及注册策略; )我认为你说得对,即使对我来说你说的话听起来很复杂:D
  • 开始变得清晰了... :) 感谢您的回答和评论!
猜你喜欢
  • 2013-06-21
  • 1970-01-01
  • 2015-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-01
  • 2023-04-02
  • 2011-04-15
相关资源
最近更新 更多