コントローラアクションでデフォルト以外の別のビューをレンダリングする方法。デフォルトでは、ビューフォルダー内のアクションと同じビューを見つけようとしますが、コントローラーアクション用にビューフォルダーで使用可能な別のビューをレンダリングしたいと思います。
このZF1は次のように実行できます$this->_helper->viewRenderer('foo');
Zendframework 2で上記を達成する方法を誰かが知ることができますか?
を使用してビューを無効にすることができます
$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent("Hello World");
return $response;
Zf2で別のビューを変更/レンダリングする方法がわかりません。
を使用して行うことができます
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 に感謝します。
Zend Framewor 2での私のソリューションは簡単です。 indexアクションの場合parrent :: indexAction()コンストラクターbcsを拡張しますZend\Mvc\Controller\AbstractActionController。または単にreturn array() in indexAction。 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でルートとview_managerを設定することを忘れないでください
'view_manager' => array(
'template_path_stack' => array(
'Test' => __DIR__ . '/../view',
),
),