Zend Framework 2中何时应使用AcceptableViewModelSelector和呈现/响应策略?

Zend Framework 2中何时应使用AcceptableViewModelSelector和呈现/响应策略?,view,zend-framework2,rendering,zend-controller-plugin,View,Zend Framework2,Rendering,Zend Controller Plugin,如果需要JSON、XML等als输出格式,可以使用或/和(?) 何时应用一个和另一个(以及何时应用组合) 它们可以/应该结合起来吗?嗯,这些策略基本上就是听众。根据控制器操作返回的模型类型给出操作的侦听器。如果返回ViewModel,将执行phprenderStrategy。如果您返回一个JsonModel,JsonStrategy将完成它的工作,如果您返回一个FeedModel则是FeedStrategy完成它的工作 然而,这些策略只有在注册后才适用。因此,如果在未注册JsonStrategy

如果需要JSON、XML等als输出格式,可以使用或/和(?)

何时应用一个和另一个(以及何时应用组合)


它们可以/应该结合起来吗?

嗯,这些策略基本上就是听众。根据控制器操作返回的模型类型给出操作的侦听器。如果返回
ViewModel
,将执行
phprenderStrategy
。如果您返回一个
JsonModel
JsonStrategy
将完成它的工作,如果您返回一个
FeedModel
则是
FeedStrategy
完成它的工作

然而,这些策略只有在注册后才适用。因此,如果在未注册
JsonStrategy
的情况下返回
JsonModel
,则不会发生任何事情

根据accept标头的不同,
AcceptableViewModelSelector
提供了更方便的访问和处理不同模型格式的功能。这有助于使事情变得更容易,不多也不少

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

要将这一点调整到您的问题,请执行以下操作:

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

如果这还不包括你的问题,我对如何回答你很不确定。嗯,基本上,这些策略都是听众。根据控制器操作返回的模型类型给出操作的侦听器。如果返回
ViewModel
,将执行
phprenderStrategy
。如果您返回一个
JsonModel
JsonStrategy
将完成它的工作,如果您返回一个
FeedModel
则是
FeedStrategy
完成它的工作

然而,这些策略只有在注册后才适用。因此,如果在未注册
JsonStrategy
的情况下返回
JsonModel
,则不会发生任何事情

根据accept标头的不同,
AcceptableViewModelSelector
提供了更方便的访问和处理不同模型格式的功能。这有助于使事情变得更容易,不多也不少

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

要将这一点调整到您的问题,请执行以下操作:

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

如果这还没有涵盖你的问题,我对如何回答你很不确定^^

你能评论一下你的反对票吗?你能评论一下你的反对票吗?这意味着,如果我需要几种输出类型,取决于
接受
值,我必须结合使用
可接受的ViewModelSelector
和策略?方法是:(0.实施策略,如果需要定制策略)。注册策略;2.使用
AcceptableViewModelSelector
检测
Accept
值;3.(在控制器操作/休息方法中)返回一个
ViewModel
对象,该对象由一个注册的策略支持;4.
Zend\View\View
将根据/使用策略处理
ViewModel
对象。我是否正确地理解了这个方法?我认为即使你觉得太复杂了,你还是做对了。AVMS只是自动执行“接受头到渲染策略匹配”的助手;)在后台,AVMS所做的一切就是使用标题,选择适当的渲染策略,并注册策略;)我认为你说得对,尽管你说的话听起来很复杂:它开始变得清晰了……)谢谢你的回答和评论!这意味着,如果根据
Accept
值需要几种输出类型,我必须使用
AcceptableViewModelSelector
和策略的组合?方法是:(0.实施策略,如果需要定制策略)。注册策略;2.使用
AcceptableViewModelSelector
检测
Accept
值;3.(在控制器操作/休息方法中)返回一个
ViewModel
对象,该对象由一个注册的策略支持;4.
Zend\View\View
将根据/使用策略处理
ViewModel
对象。我是否正确地理解了这个方法?我认为即使你觉得太复杂了,你还是做对了。AVMS只是自动执行“接受头到渲染策略匹配”的助手;)在后台,AVMS所做的一切就是使用标题,选择适当的渲染策略,并注册策略;)我认为你说得对,尽管你说的话听起来很复杂:它开始变得清晰了……)谢谢你的回答和评论!