2012-08-24 9 views
16

Jak renderować inny widok niż domyślny w akcji kontrolera. domyślnie próbuje znaleźć ten sam widok, co akcja w folderze widoku, ale chciałbym renderować inny widok dostępny w folderze widoków dla akcji kontrolera.Jak renderować inny widok w działaniu kontrolera ZF2

Możemy to zrobić ZF1 tak $this->_helper->viewRenderer('foo');

Czy Ktoś wie, jak osiągnąć powyżej w ZendFramework 2?

Możemy wyłączyć widok używając

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

nie wiem jak zmienić/renderowanie inny pogląd w ZF2.

Odpowiedz

44

można zrobić za pomocą

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

Dzięki akrabat na pokrycie prawie każdy scenariusz.

+1

http: // zf2test.akrabat.com/ – Developer

+1

https://github.com/akrabat/ZF2TestApp/blob/master/module/Application/config/module.config.php#L78 – Developer

+0

+1, idealna odpowiedź !!! – SagarPPanchal

2

Moje rozwiązanie w Zend Framewor 2 jest proste. Dla indeks akcja wolę wywoływać parrent :: indexAction() Konstruktor bcs rozszerzamy Zend \ Mvc \ Controller \ AbstractActionController. Lub po prostu return array() w indexAction. ZF zwróci atomaticly index.pthml whitout definig co musi zostać zwrócone.

powrót nowy ViewManager() jest taka sama 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; 
    } 

Nie zapomnij skonfigurować trasę i view_manager w module/config/module_config

'view_manager' => array(
     'template_path_stack' => array(
      'Test' => __DIR__ . '/../view', 
     ), 
    ), 
Powiązane problemy