在我的ZF2中,我试图使用$ this-&gt;渲染(&#39;渲染/电子邮件/模板&#39;)但是它无法加载文件,因此当我执行以下方法时,它可以正常工作。< / p>
但是在使用require_once
时,我无法获取$ variable中的内容以便稍后处理,它会立即转储该值,其中 - &gt; render()方法可以将其放入变量中。
如何使用require_once
之类的ZF $ this-&gt; render?
define('ROOT_PATH', dirname(__DIR__));
require_once (ROOT_PATH . '/Controller/render/email/template.phtml');
编辑:
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;
答案 0 :(得分:1)
在ZF2中,如果要将模板存储在变量中,则需要设置和渲染模板:
$view->setTemplate(ROOT_PATH . '/Controller/render/email/template.phtml');
$viewRenderer = $this->getServiceLocator()->get('ViewRenderer');
$html = $viewRenderer->render($view);
您也可以嵌套视图:
$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');
您可以找到更多信息here
答案 1 :(得分:0)
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;
}
}