Zend框架中如何切换视图

4

我在控制器中有一个操作,根据表单中下拉列表的值显示不同类型的输出。

我编写了一个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仍然是默认的一个Smarty模板引擎,它在/public/index.php中设置。

我查看了文档,发现可以在控制器的init()函数中设置视图http://framework.zend.com/manual/en/zend.view.scripts.html,但这会将视图设置为整个控制器,而我不想这样做。

我该如何仅更改此操作的输出类型?


为什么你不想为整个控制器设置视图?你在单个请求期间调用了该控制器中的多个操作吗? - jah
我建议将其设置在Bootstrap或控制器插件中,而不是控制器中。 - takeshin
控制器负责处理模型中与一个对象相关的所有事务,例如添加、编辑、删除,并需要显示HTML。 - Hexdoll
1个回答

7

如果你只想改变要呈现的模板,使用以下方法:

$this->_helper->viewRenderer('viewscripthere');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接