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)
- 通过
helper:ViewRenderer
$view=Zend\u Controller\u Action\u HelperBroker::getExistingHelper('ViewRenderer')->视图检索视图实例代码>
- 通过应用程序引导程序检索视图实例:
view=Zend\u Controller\u Front::getInstance()->getParam('bootstrap')->bootstrap('view')->getResource('view')代码>