如何在控制器操作中呈现除默认值以外的其他视图。默认情况下,它尝试在视图文件夹中找到与操作相同的视图,但我想在视图文件夹中为控制器操作呈现不同的视图。
我们可以像这样$this->_helper->viewRenderer('foo');
任何人都知道,如何在Zendframework 2中实现上述目标?
我们可以使用
禁用视图$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent("Hello World");
return $response;
我不知道如何在zf2中更改/渲染不同的视图。
答案 0 :(得分:47)
可以使用
完成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几乎覆盖了所有情景。
答案 1 :(得分:2)
我在Zend Framewor 2中的解决方案很简单。对于索引操作,我更喜欢调用 parrent :: indexAction()构造函数bcs,我们扩展 Zend \ Mvc \ Controller \ AbstractActionController 。或者只是在indexAction中返回array()。 ZF将自动返回index.pthml whitout definig必须返回的内容。
返回新的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 / module_config中配置route和view_manager
'view_manager' => array(
'template_path_stack' => array(
'Test' => __DIR__ . '/../view',
),
),