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 sfRouting. 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://miapp.ejemplo.com/articulo/21
 
// Se utiliza lo siguiente en la acción articulo/ver
$uri = sfRouting::getInstance()->getCurrentInternalUri();
 => articulo/ver?id=21
 
$uri = sfRouting::getInstance()->getCurrentInternalUri(true);
 => @articulo_segun_id?id=21
 
$regla = sfRouting::getInstance()->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 = $this->getRequestParameter('module');
$accion = $this->getRequestParameter('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://miapp.ejemplo.com/articulo/21
Puedes sugerir, comentar, criticar e informar de errores en contacto (arroba) librosweb.es
« Anterior
9.4. Configuración del sistema de enrutamiento
Siguiente »
9.6. Resumen

válido para Symfony 1.0

Índice de contenidos

Capítulo original en inglés Chapter 9 - Links And The Routing System Traducido por Javier Eguíluz

Los contenidos originales de este sitio están bajo una licencia de Creative Commons. Las traducciones disponen cada una de su propia licencia.