7

今私はそうしています:

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

問題は、$view レンダリングの後、レイアウト レンダリングの前に何かをしたいということです。

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 では、ビューをレンダリングできました。

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

ZF2でそれを行うにはどうすればよいですか?

4

2 に答える 2

29

これを試して:

public function IndexAction()
{
    ...
    $viewRender = $this->getServiceLocator()->get('ViewRenderer');
    $html = $viewRender->render($viewModel);
    ...
}
于 2013-03-22T07:13:08.167 に答える
15

レイアウトを含めて答えを補完する...

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

    $layout = new ViewModel();
    $layout->setTemplate("layout/main");
    $layout->setVariable("content", $viewRender->render($viewModel));

    $html = $viewRender->render($layout);
    ...
}
于 2013-07-17T18:40:56.033 に答える