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

时间:2016-10-24 11:23:33

标签: php zend-framework zend-framework2

在我的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;

2 个答案:

答案 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;  
  }

}