【发布时间】:2011-06-15 06:32:46
【问题描述】:
我在控制器中有一个动作,它应该根据表单下拉列表中的值显示不同类型的输出。
我已经为不同的视图类型编写了一个 Templater 对象(从 Zend_View_Abstract 扩展而来)。
我已尝试运行以下代码:
public function generateDocumentAction()
{
//...some code to set $view depending on post data
// e.g. $view = new TemplaterOdt(); //view as an OpenOffice document
$this->_helpers->getHelper('viewRenderer')->setView($view);
$this->view->myvar = $form->getValue('some_value');
}
但$this->view 仍然是在 /public/index.php 中设置的默认值(Smarty 模板)
我查看了文档,它说您可以在控制器 http://framework.zend.com/manual/en/zend.view.scripts.html 的 init() 函数中设置视图,但这会为整个控制器设置我不想要的视图。
如何仅更改此操作的输出类型?
【问题讨论】:
-
为什么不想为整个控制器设置视图呢?您是否在单个请求期间在该控制器中调用了多个操作?
-
我建议在
Bootstrap或控制器插件中设置它,而不是控制器。 -
控制器正在做与模型中的一个对象相关的所有事情,即添加、编辑、删除,它们需要显示 HTML。
标签: model-view-controller zend-framework view