2012-08-24 3 views
16

コントローラアクションでデフォルト以外の別のビューをレンダリングする方法。デフォルトでは、ビューフォルダ内のアクションと同じビューを検索しようとしますが、ビューアフォルダ内でレンダリング可能な別のビューを使用して、コントロールアクションを実行したいとします。我々はこれを行うことができますZF2のコントローラアクションで別のビューをレンダリングする方法

は次のようにZF1 $this->_helper->viewRenderer('foo');

誰でも、どのようにZendframework 2で上記を達成するために知っていることはできますか?

私たちは、私がZF2で別のビューをレンダリングする/変更する方法がわからない

$response = $this->getResponse(); 
     $response->setStatusCode(200); 
     $response->setContent("Hello World"); 
     return $response; 

を使用してビューを無効にすることができます。

答えて

44

は、ほぼすべてのシナリオをカバーするためのakrabat

public function abcAction() 
{ 
    $view = new ViewModel(array('variable'=>$value)); 
    $view->setTemplate('module/controler/action.phtml'); // path to phtml file under view folder 
    return $view; 
} 

感謝を使用して行うことができます。

+1

HTTPでルートとview_managerを設定するのを忘れ:// zf2test.akrabat.com/ – Developer

+1

https://github.com/akrabat/ZF2TestApp/blob/master/module/Application/config/module.config.php#L78 – Developer

+0

+1、完璧な答え! – SagarPPanchal

2

Zend Framewor 2の私のソリューションは簡単です。 インデックスアクション私はを呼び出すことを好む。逆引き:: indexAction()コンストラクタbcs Zend \ Mvc \ Controller \ AbstractActionController。または、indexActionにarray()を返します。 ZFは、返さなければならないものを、index.pthmlで指定して返します。

リターン新しいViewManager()が同じ戻り配列()である

<?php 

namespace Test\Controller; 

use Zend\Mvc\Controller\AbstractActionController, 
    Zend\View\Model\ViewModel; 

// Or if u write Restful web service then use RestfulController 
// use Zend\Mvc\Controller\AbstractRestfulController 

class TestController extends AbstractActionController 
{ 
    /* 
    * Index action 
    * 
    * @return main index.phtml 
    */ 

    public function indexAction() 
    { 
      parent::indexAction(); 

      // or return new ViewModel(); 
      // or much simple return array(); 
    } 

    /* 
    * Add new comment 
    * 
    * @return addComment.phtml 
    */ 

    public function addAction() 
    { 
     $view = new ViewManager(); 
     $view->setTemplate('test/test/addComment.phtml'); // module/Test/view/test/test/ 

     return $view; 
    } 

いけないモジュール/設定/ module_config

'view_manager' => array(
     'template_path_stack' => array(
      'Test' => __DIR__ . '/../view', 
     ), 
    ), 
関連する問題