我遇到Zend Framework 2的问题。
我想为每个操作设置2个视图脚本,以显示适用于PC和智能手机的视图。我知道如何更改布局:
$viewModel->setTemplate(layout_path)
但我无法找到如何更改视图脚本。
我在Application/view/application/index
的索引视图文件夹IndexController
中有以下文件:
index.php (view file for PC)
index_sp.php (view file for smartphone)
如何在控制器或控制器插件中将视图脚本更改为index_sp.php
?
答案 0 :(得分:11)
如果要更改实际的布局视图文件,可以在控制器中执行此操作:
// example to change base layout for ajax requests
if($this->getRequest()->isXmlHttpRequest()) {
$this->layout('layout/ajax-layout');
}
如果要更改当前视图模型/操作使用的视图,可以在控制器/操作中执行此操作:
$viewModel = new ViewModel(array(
'form' => $form
'something' => $something
));
$viewModel->setTemplate('mymodule/newview.phtml');
return $viewModel;
答案 1 :(得分:1)
public function doSomethingCrazyAction() {
$view = new ViewModel(array(
'message' => 'Hello world',
));
// This is the way to change render(view)..
$view->setTemplate('modulename/controllername/phtml-file-name');
return $view;
}
Docu:http://framework.zend.com/manual/current/en/modules/zend.view.quick-start.html