17

コントローラアクションでデフォルト以外の別のビューをレンダリングする方法。デフォルトでは、ビューフォルダー内のアクションと同じビューを見つけようとしますが、コントローラーアクション用にビューフォルダーで使用可能な別のビューをレンダリングしたいと思います。

このZF1はこのようにできます$this->_helper->viewRenderer('foo');

Zendframework 2で上記を達成する方法を誰かが知ることができますか?

を使用してビューを無効にできます

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

zf2で別のビューを変更/レンダリングする方法がわかりません。

4

2 に答える 2

50

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

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

ほぼすべてのシナリオをカバーしてくれたakrabatに感謝します。

于 2012-08-24T12:48:12.353 に答える
2

ZendFramewor2での私の解決策は単純です。インデックスアクションの場合、parrent :: indexAction()コンストラクターbcsを呼び出すことを好みます。Zend \ Mvc \ Controller\AbstractActionControllerを拡張します。または、indexActionでarray()を返すだけです。ZFは、何を返す必要があるかを定義せずに、index.pthmlをアトミックに返します。

return new ViewManager()は同じreturn array()

<?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/module_configでrouteとview_managerを設定することを忘れないでください

  'view_manager' => array(
        'template_path_stack' => array(
            'Test' => __DIR__ . '/../view',
        ),
    ),
于 2013-07-25T15:24:17.817 に答える