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