Zend Framework 2 - 如何更改控制器插件中的视图脚本?

时间:2013-01-23 08:23:32

标签: zend-framework2

我遇到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

2 个答案:

答案 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