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.