In my ZF2 i am trying to use $this->render('render/email/template') but its failing to load the file, therefore when i do following method, it worked.
But while using require_once
i cant get the content in $variable to process later, it dumps the value instantly, where ->render() method can put it in a variable.
How do i use require_once
like ZF $this->render?
define('ROOT_PATH', dirname(__DIR__));
require_once (ROOT_PATH . '/Controller/render/email/template.phtml');
EDIT:
public function indexAction() {
error_reporting(E_ALL); ini_set('display_errors', 1);
/*
$this->layout('layout/email/header_footer');
$view = new ViewModel(array(
'name' => 'OKOKOKOK'
));
$view->setTemplate('layout/email/template');
$html= $view;
echo $html;*/
define('ROOT_PATH', dirname(__DIR__));
$this->layout('layout/email/header_footer');
$view = new ViewModel(array(
'name' => 'OKOKOKOK'
));
$view->setTemplate('layout/email/template');
$viewRenderer = $this->getServiceLocator()->get('ViewRenderer');
$html = $viewRenderer->render($view);
echo $html;
exit;
In ZF2 you need to set and render the template like this if you want to store it in a variable:
$view->setTemplate(ROOT_PATH . '/Controller/render/email/template.phtml');
$viewRenderer = $this->getServiceLocator()->get('ViewRenderer');
$html = $viewRenderer->render($view);
You can nest views as well:
$mainView = new ViewModel();
$mainView->setTemplate(ROOT_PATH . 'path/to/your/header_footer.phtml');
$contentView = new ViewModel(array(
'name' => 'OKOKOKOK'
));
$contentView->setTemplate(ROOT_PATH . '/Controller/render/email/template.phtml');
$mainView->addChild($contentView, 'content');
You can find more information here
Updates of Simon.
<?php
namespace Application\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\View\Model\ViewModel;
use Zend\Debug\Debug;
class TestController extends AbstractActionController {
public function irender($html, $input) {
$view = new ViewModel($input);
//$view->setTemplate('layout/email/default');
$view->setTemplate($html);
$viewRenderer = $this->getServiceLocator()->get('ViewRenderer');
return $viewRenderer->render($view);
}
public function indexAction() {
error_reporting(E_ALL); ini_set('display_errors', 1);
/*
Project path where the file is: /var/www/html/projectzf/module/Application/view/layout/email/default.phtml
*/
echo $this->irender('layout/email/default', array(
'name' =>'OK OK OK'
));
exit;
}
}