2012-08-24 9 views
16

Cómo presentar una vista diferente a la predeterminada en la acción del controlador. de forma predeterminada, trato de encontrar la misma vista que la acción en la carpeta de visualización, pero me gustaría mostrar otra vista disponible en la carpeta de vistas para la acción del controlador.Cómo representar una vista diferente en la acción del controlador de ZF2

Podemos hacer esto ZF1 como esto $this->_helper->viewRenderer('foo');

¿Hay alguien que sabe, cómo lograr más arriba en ZendFramework 2?

Podemos deshabilitado la vista utilizando

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

No sé cómo cambiar/rinden una vista diferente en ZF2.

Respuesta

44

se puede hacer usando

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

Gracias a akrabat para cubrir casi todos los escenarios.

+1

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

+1

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

+0

+1, respuesta perfecta! – SagarPPanchal

2

Mi solución en Zend Framewor 2 es simple. Para índice acción prefiero llamar parrent :: indexAction() constructor bcs ampliamos Zend \ Mvc \ Controller \ AbstractActionController. O simplemente return array() en indexAction. ZF devolverá index.pthml atomaticly sin definir lo que debe devolverse.

retorno nueva ViewManager() es el mismo 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; 
    } 

No se olvide de configurar la ruta y view_manager en el módulo/config/module_config

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