Redirector Introducción El ayudante Redirector le permite utilizar un objeto de redireccionamiento para cumplir con necesidades de su aplicación para redireccionar a una nueva URL . Ofrece numerosas ventajas sobre el método _redirect() , tales como poder preconfigurar un comportamiento para todo el sitio en el objeto redirector o usando el construido en gotoSimple($action, $controller, $module, $params) , interfaz similar a la de Zend_Controller_Action::_forward() . El Redirector tiene un número de métodos que pueden utilizarse para afectar el comportamiento al redireccionar: setCode() puede ser utilizado para establecer el código de respuesta HTTP que utilizar durante la redirección. setExit() puede usarse para forzar un exit() tras una redirección. Por defecto es verdadero ( TRUE ). setGotoSimple() puede ser utilizada para establecer la URL que usar por defecto si no se ha pasado ninguna a gotoSimple() . Utiliza la API de Zend_Controller_Action::_forward() : setGotoSimple($action, $controller = null, $module = null, array $params = array()); setGotoRoute() puede ser utilizada para establecer una URL basada en una ruta. Pasarla en un array de pares clave/valor y un nombre de ruta, y que ensamblarán la URL según la definición y el tipo de ruta. setGotoUrl() puede ser utilizada para establecer una URL por defecto si no se pasa ninguna a gotoUrl() . Acepta un solo string URL . setPrependBase() puede ser utilizada para anteponer la URL base del objeto solicitud a una URL especificada con setGotoUrl() , gotoUrl() , o gotoUrlAndExit() . setUseAbsoluteUri() puede ser utilizada para forzar al Redirector a usar URI s absolutas cuando está redireccionando. Cuando se establece esta opción, se utiliza el valor de $_SERVER['HTTP_HOST'] , $_SERVER['SERVER_PORT'] , y $_SERVER['HTTPS'] para formar una URI completa a la URL especificada por uno de los métodos de redirección. Esta opción está desactivada por defecto, pero podrá ser activada por defecto en versiones posteriores. Además, hay una variedad de métodos en el redireccionamiento para realizar las redirecciones actuales: gotoSimple() usa setGotoSimple() (_forward()-tipo API) para construir una URL y realizar un redireccionamiento. gotoRoute() usa setGotoRoute() ( route-assembly ) para construir una URL y realizar un redireccionamiento. gotoUrl() usa setGotoUrl() ( URL string ) para construir una URL y realizar un redireccionamiento. Por último, usted puede determinar la redirección actual de la URL en cualquier momento usando getRedirectUrl() . Ejemplos Básicos de Uso Estableciendo Opciones Este ejemplo anula varias opciones, incluido el establecimiento del código de estado HTTP para usar en la redirección ('303'), no saliendo por defecto en la redirección, y definir una URL a usar por defecto cuando se redireccione. _redirector = $this->_helper->getHelper('Redirector'); // Establece las opciones por defecto del redirector // Dado que el objeto es registrado en el ayudante, éstos pasan a // ser relevantes para todas las acciones desde este punto en adelante $this->_redirector->setCode(303) ->setExit(false) ->setGotoSimple("this-action", "some-controller"); } public function myAction() { /* hacer algunas cosas */ // Redireccionar a una URL previamente registrada, // y forzar una salida cuando esté hecho: $this->_redirector->redirectAndExit(); return; // nunca alcanzado } } ]]> Usando Defaults Este ejemplo asume que se usan los valores predeterminados, lo que significa que cualquier redirección resultará en un exit() inmediato. _redirector = $this->_helper->getHelper('Redirector'); } public function myAction() { /* hacer algunas cosas */ $this->_redirector ->gotoUrl('/my-controller/my-action/param1/test/param2/test2'); return; // nunca alcanzado dado que por defecto es ir a URL y salir } } ]]> Usando la API _forward() de goto() La API gotoSimple() imita a la de Zend_Controller_Action::_forward() . La diferencia principal es que construye una URL desde los parámetros pasados, y utiliza el formato por defecto :module/:controller/:action/* del enrutador predeterminado. A continuación se redirecciona en lugar de encadenar la acción. _redirector = $this->_helper->getHelper('Redirector'); } public function myAction() { /* hacer algunas cosas */ // Redireccionar a 'my-action' de 'my-controller' en el módulo // actual, usando los parámetros param1 => test y param2 => test2 $this->_redirector->gotoSimple('my-action', 'my-controller', null, array('param1' => 'test', 'param2' => 'test2' ) ); } } ]]> Usando Ruta de Ensamblaje con gotoRoute() El siguiente ejemplo usa el método assemble() del enrutador para crear una URL basada en un array asociativo de parámetros pasados. Se supone que la siguiente ruta ha sido registrada: 'archive', 'module' => 'blog', 'action' => 'view') ); $router->addRoute('blogArchive', $route); ]]> Dado un array con el año fijado a 2006, mes a 4, día a 24, e id a 42, entonces construye la siguiente URL /blog/2006/4/24/42 . _redirector = $this->_helper->getHelper('Redirector'); } public function returnAction() { /* hacer algunas cosas */ // Redireccionar al archivo blog. Construir la siguiente URL: // /blog/2006/4/24/42 $this->_redirector->gotoRoute( array('year' => 2006, 'month' => 4, 'day' => 24, 'id' => 42), 'blogArchive' ); } } ]]>