sábado, 17 de marzo de 2012

Métodos _forward _redirect

Zend_Controller_Action tiene dos métodos que nos permiten movernos fácilmente entre acciones de un controlador a otro, el método _forward() y _redirect(), la diferencia entre ellos radica básicamente en que _forward () pasa de una acción a otra sin hacer una nueva petición HTTP, permaneciendo en la misma URL


indexController.php




class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        /* Initialize action controller here */
    }
    public function indexAction()
    {
        $this->_forward('listar');
    }
   public function listarAction()
    {
        
    }
}



listar.phtml


<div>
   <h1>Listar</h1>  
</div>


Realicemos algunos cambios


Controller
public function indexAction()

    {
        $this->_forward('listar','index',null,array( 'nombre' => 'Carlos' ));
        //_forward($action, $controller = null, $module = null,array $params = null)
        // Los parametros con valor null son opcionales
    }         
   public function listarAction()
    {
       $this->view->nombre = $this->_getParam('nombre','sin nombre'); 
       // _getParam tiene dos parametros, el primero es el nombre la
       // la variable a recuperar y el segundo(opcional) es el valor por defecto si
       // la variable no esta.
    }


Vista


<div>
   <h1>Listar <?php echo $this->nombre;?></h1>  
</div>


De esta forma podemos pasar valores de una acción a otra. Ahora nuestro ejemplo será utilizando _redirect()  este método utiliza dos parametros $this->_redirect($url,$opciones).



<?php

class IndexController extends Zend_Controller_Action
{
    public function init()
    {
        /* Initialize action controller here */
    }

    public function indexAction()
    {
        $this->_redirect('contacto/index');
         //_redirect($url)       
    }

Al verificar este ejemplo se puede apreciar que la URL en el navegador ha cambiado.