Rutas ocultas, obtener el nombre de la ruta en Drupal 8.

Imagen
Escalabilidad de iconos

En muchas ocasiones, el nombre de la ruta es algo que necesitamos, por ejemplo para generar algún enlace o enlazar a través de un modulo a ciertas funcionalidades.

Algunas son sencillas de encontrar, ya que las rutas estaticas están registraras en el archivo routing.yml de cada modulo, pero esto no siempre es así, ya que existen rutas dinámicas, o están compuestas por algun parametro y esto puede ser una pesadilla en alguna ocasión.

De modo que vamos a ver una manera muy sencilla de como podemos obtener esas rutas, mirando en el archivo routing.yml y con el servicio "current_route_match".

La ruta la en routing.yml

Lo mas común, es que las rutas se encuentren definidas en el archivo routing del modulo, en el ejemplo el modulo "User":

user.routing.yml

user.register:
  path: '/user/register'
  defaults:
    _entity_form: 'user.register'
    _title: 'Create new account'
  requirements:
    _access_user_register: 'TRUE'

Esto es lo normal, cuando las rutas son estáticas, y están definidas, el problema llega cuando esas rutas, no las encontramos en el routing.yml.

Esto puede ser debido a que son rutas dinámicas, o pertenecen a alguna entidad (las cuales por lo general, también se registran en routing.yml, pero no siempre).

Como podemos encontrar esas rutas

Realmente es muy sencillo, tenemos que utilizar el servicio ‘current_route_match’ con el cual podremos obtener la ID de la ruta actual.

Lo primero es editar el archivo index.php añadiendo una linea con la llamada al servicio y al metodo “getRouteName()”.

La linea tenemos que añadirla antes de $response→send(); de modo que queda de la siguiente manera:

$autoloader = require_once 'autoload.php';

$kernel = new DrupalKernel('prod', $autoloader);

$request = Request::createFromGlobals();
$response = $kernel->handle($request);
print_r(\Drupal::routeMatch()->getRouteName());
$response->send();

$kernel->terminate($request, $response);

De esta manera, se nos mostrar el nombre de la ruta en la parte superior de la web cuando se ejecute la linea “print_r(\Drupal::routeMatch()→getRouteName());”. Recordar que esta linea debemos borrarla en ambientes de producción, solo se debe utiliza en desarrollo.

Ruta mostrada en la pagina