RedirectorIntroducció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 UsoEstableciendo 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'
);
}
}
]]>