En ocasiones es necesario obtener información sobre la ruta actual, por ejemplo para preparar un enlace típico de "Volver a la página XXX". En estos casos, se deben utilizar los métodos disponibles en el objeto sfPatternRouting
. Las URI devueltas por el método getCurrentInternalUri()
se pueden utilizar directamente en las llamadas al helper link_to()
, como se muestra en el listado 9-25.
Listado 9-25 - Uso de sfRouting
para obtener información sobre la ruta actual
// Si se necesita una URL como la siguiente
http://frontend.ejemplo.com/articulo/21
$enrutamiento = sfContext::getInstance()->getRouting();
// Se utiliza lo siguiente en la acción articulo/ver
$uri = $enrutamiento->getCurrentInternalUri();
=> articulo/ver?id=21
$uri = $enrutamiento->getCurrentInternalUri(true);
=> @articulo_segun_id?id=21
$regla = $enrutamiento->getCurrentRouteName();
=> articulo_segun_id
// Si se necesitan los nombres del módulo y de la acción,
// se pueden utilizar los parámetros de la petición
$modulo = $peticion->getParameter('module');
$accion = $peticion->getParameter('action');
Si se necesita transformar dentro de la acción una URI interna en una URL externa, como se hace en las plantillas con el helper url_for()
, se utiliza el método genUrl()
del objeto sfController
, como se muestra en el listado 9-26.
Listado 9-26 - Uso de sfController
para transformar una URI interna
$uri = 'articulo/ver?id=21';
$url = $this->getController()->genUrl($uri);
=> /articulo/21
$url = $this->getController()->genUrl($uri, true);
=> http://frontend.ejemplo.com/articulo/21