Как отобразить другое представление в действии контроллера ZF2
Как отобразить другое действие, отличное от значения по умолчанию в действии контроллера. по умолчанию он пытается найти тот же вид, что и действие в папке просмотра, но я хотел бы визуализировать другое представление, доступное в папке views для действия управления.
Мы можем сделать это ZF1 следующим образом $this->_helper->viewRenderer('foo');
Может ли кто-нибудь узнать, как достичь выше в Zendframework 2?
Мы можем отключить представление, используя
$response = $this->getResponse();
$response->setStatusCode(200);
$response->setContent("Hello World");
return $response;
Я не знаю, как изменить/отобразить другое представление в zf2.
Ответы
Ответ 1
можно выполнить с помощью
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 для охвата почти каждого сценария.
Ответ 2
Мое решение в Zend Framewor 2 прост. Для действия index я предпочитаю вызывать parrent:: indexAction() конструктор bcs, мы расширяем Zend\Mvc\Controller\AbstractActionController. Или просто вернуть массив() в indexAction. ZF будет атомарно возвращать index.pthml без определения того, что должно быть возвращено.
return new 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;
}
Не забудьте настроить маршрут и view_manager в модуле /config/module _config
'view_manager' => array(
'template_path_stack' => array(
'Test' => __DIR__ . '/../view',
),
),