Model view controller Zend Framework:我可以在模型中设置视图变量吗?

Model view controller Zend Framework:我可以在模型中设置视图变量吗?,model-view-controller,zend-framework,Model View Controller,Zend Framework,在控制器中,我通常执行以下操作: $this->view->foo = "bar"; (我称之为vars,作为VIEW-vars) 在view脚本中,我使用以下方式渲染此脚本: echo $this->foo; 因此,我想知道是否有可能在模型内部(而不是在控制器中)定义“视图变量”,这些变量可以在视图脚本中呈现。将信息分配给视图是控制器的工作,而按照您的建议执行会弄乱MVC模式的边界 您真正应该做的是将模型指定给视图(在控制器中),然后访问视图中模型的各个部分。或者,您可以

在控制器中,我通常执行以下操作:

$this->view->foo = "bar";
(我称之为vars,作为VIEW-vars)

在view脚本中,我使用以下方式渲染此脚本:

echo $this->foo;

因此,我想知道是否有可能在模型内部(而不是在控制器中)定义“视图变量”,这些变量可以在视图脚本中呈现。

将信息分配给视图是控制器的工作,而按照您的建议执行会弄乱MVC模式的边界


您真正应该做的是将模型指定给视图(在控制器中),然后访问视图中模型的各个部分。或者,您可以仅在控制器中分配模型的相关部分。

忽略模型确实不应负责配置视图这一事实,但在某些情况下是允许的(例如ViewModel模式)。 有几种检索或提供视图实例的方法:

  • 注入视图实例。从控制器中,您可以通过注入实例来提供模型(
    $model->setView($this->view)
  • 通过
    ViewRenderer
    helper:
    $view=Zend\u Controller\u Action\u HelperBroker::getExistingHelper('ViewRenderer')->视图检索视图实例
  • 通过应用程序引导程序检索视图实例:
    view=Zend\u Controller\u Front::getInstance()->getParam('bootstrap')->bootstrap('view')->getResource('view')

你可以,但不应该。这有点违背了模式的目的。MVVM的想法当然仍然不是将视图与模型耦合,而是作为数据绑定通过ViewModel?