Now I am doing so:
public function indexAction() {
...
$view = new ViewModel(array(
'foo' => 'bar',
));
return $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);
}
But there is no method render(). In ZF1 I could render view:
$view = new Zend_View($data);
$html = $view->render($templateName);
How can I do that in ZF2?
Try this:
public function IndexAction()
{
...
$viewRender = $this->getServiceLocator()->get('ViewRenderer');
$html = $viewRender->render($viewModel);
...
}
Complementing the answer, with layout included...
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);
...
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.