ZF2 - 如何使用 require_once 作为 $this->render?

ZF2 - how to use require_once as $this->render?

在我的 ZF2 中,我正在尝试使用 $this->render('render/email/template') 但它无法加载文件,因此当我执行以下方法时,它起作用了。

但是在使用 require_once 时,我无法获取 $variable 中的内容以便稍后处理,它会立即转储值,其中 ->render() 方法可以将其放入变量中。

如何像 ZF $this->render 一样使用 require_once

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;

在 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

西蒙的更新。

<?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;  
  }

}