2012-08-24 5 views
16

So rendern Sie eine andere Ansicht als die Standardvorgabe in der Controller-Aktion. Standardmäßig versuche ich, die selbe Ansicht als Aktion im View-Ordner zu finden, aber ich würde gerne eine andere View im Views-Ordner für Controler Action rendern.So rendern Sie eine andere Ansicht in der Controller-Aktion von ZF2

Wir können dies wie folgt ZF1 tun $this->_helper->viewRenderer('foo');

Kann jemand wissen, wie man sich über 2 in ZendFramework erreichen?

Wir können die Ansicht mit

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

Ich weiß nicht deaktiviert, wie sich ändern/render eine andere Ansicht in ZF2.

Antwort

44

zur Abdeckung fast jedes Szenario mit

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

Dank akrabat erfolgen.

+1

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

+1

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

+0

+1, perfekte Antwort !!! – SagarPPanchal

2

Meine Lösung in Zend Framewor 2 ist einfach. Für Index Aktion ich bevorzuge, zu rufen parrent :: indexAction() Konstruktor bcs wir erweitern Zend \ Mvc \ Controller \ AbstractActionController. Oder einfach Rückgabe Array() in indexAction. ZF wird atomatisch index.pthml ohne Angabe zurückgeben, was zurückgegeben werden muss.

return new Viewmanager() ist die gleichereturn 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; 
    } 

Dont vergessen Route und view_manager in Modul/config/module_config

'view_manager' => array(
     'template_path_stack' => array(
      'Test' => __DIR__ . '/../view', 
     ), 
    ),