2016-10-24 4 views
0

私のZF2では、$ this-> render( 'render/email/template')を使用しようとしていますが、ファイルをロードできませんでした。

しかし、require_onceを使用している間に、後で処理するために$ variableの内容を取得できません。値を即座にダンプします。ここでは、 - > render()メソッドを使用して変数に入れます。

require_onceはZF $ this-> renderのように使用しますか?

define('ROOT_PATH', dirname(__DIR__)); 
require_once (ROOT_PATH . '/Controller/render/email/template.phtml'); 

EDIT:

あなたが設定し、変数に格納したい場合は、このようなテンプレートをレンダリングする必要がZF2で
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; 

答えて

1

$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

+0

与えるERROR: '致命的なエラー:未定義のメソッドのZend \ビュー\モデル\ ViewModelにに呼び出し:: TestController.php' – YumYumYum

+1

@YumYumYumでsetScriptPath()どうやら彼らはZF2であることに変更しました。更新された回答を試してみてください – simon

+0

GREAT job man。私の上記のEDITをチェックしてください。 Template.phtmlをエコーするために働いていますが、レイアウトを取っていない私はheader_footer.phtmlの中にheader_footerを割り当てました。私は ' layout() - > content; ?> ' – YumYumYum

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

} 
+1

ところで、後で使用するためにHTMLを必要としない場合は、 '$ viewRenderer'部分全体を省略して' return $ view; 'を実行するだけです。 – simon

関連する問題