Ver índice de contenidos del libro

9.5. Trabajando con rutas en las acciones

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-23.

Listado 9-23 - 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 = $this->getContext()->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-24.

Listado 9-24 - 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