Как отобразить другое представление в действии контроллера ZF2 - программирование
Подтвердить что ты не робот

Как отобразить другое представление в действии контроллера ZF2

Как отобразить другое действие, отличное от значения по умолчанию в действии контроллера. по умолчанию он пытается найти тот же вид, что и действие в папке просмотра, но я хотел бы визуализировать другое представление, доступное в папке views для действия управления.

Мы можем сделать это ZF1 следующим образом $this->_helper->viewRenderer('foo');

Может ли кто-нибудь узнать, как достичь выше в Zendframework 2?

Мы можем отключить представление, используя

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

Я не знаю, как изменить/отобразить другое представление в zf2.

4b9b3361

Ответ 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',
        ),
    ),