我可以渲染视图而不在 Zend 框架 2 的动作控制器中返回它吗?

问题描述:

现在我这样做了:

public function indexAction() {
    ...
    $view = new ViewModel(array(
        'foo' => 'bar',
    ));
    return $view;
}

问题是我想在 $view 渲染之后和布局渲染之前做一些事情:

The problem is that I want to do something after $view rendering and before layout rendering:

public function indexAction() {
    ...
    $view = new ViewModel(array(
        'foo' => 'bar',
    ));
    $layout = $this->layout();

    $layout->content = $view->render();
    ...
    // here I want to do some important action
    ...
    $html = $layout->render();
    return $this->getResponse()->setContent($html);    
}

但是没有方法render().在 ZF1 中,我可以渲染视图:

But there is no method render(). In ZF1 I could render view:

$view = new Zend_View($data);
$html = $view->render($templateName);

我如何在 ZF2 中做到这一点?

How can I do that in ZF2?

试试这个:

public function IndexAction()
{
    ...
    $viewRender = $this->getServiceLocator()->get('ViewRenderer');
    $html = $viewRender->render($viewModel);
    ...
}