Obtenir le nom de l'itinéraire de la page actuelle


24

Le nom de l'itinéraire de la page actuelle est disponible dans page.html.twig? La page est générée par le formulaire de commentaires par défaut.

Réponses:


57

Pour obtenir le nom de l'itinéraire actuel, utilisez:

$route_name = \Drupal::routeMatch()->getRouteName();

Vous pouvez ajouter le nom de l'itinéraire de la page actuelle en tant que variable dans le fichier ".theme" de votre thème. Ajoutez une fonction _preprocess_page comme celle-ci et videz le cache drupal.

/**
 * Implements hook_preprocess_page().
 *
 */
function mytheme_preprocess_page(&$variables) {
  $variables['route_name'] = \Drupal::routeMatch()->getRouteName();
}

Ensuite, vous pouvez accéder à page.html.twig comme ceci:

{{ route_name }}

Remarque: \Drupal::routeMatch()->getRouteName() renvoie parfois null.

Si vous êtes dans une classe, pour faire les choses correctement, vous voudrez injecter le service de correspondance de route dans le constructeur, puis l'appeler de cette façon:

$this->currentRouteMatch->getRouteName()

Le constructeur (et la variable) sera comme ceci:

  /**
   * The current route match.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  protected $currentRouteMatch;

  /**
   * Constructs a new ThemeTestSubscriber.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
   */
  public function __construct(RouteMatchInterface $current_route_match) {
    $this->currentRouteMatch = $current_route_match;
  }

S'il s'agit d'une classe de service, vous devez ensuite la transmettre au service dans le fichier yaml de votre module personnalisé:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']

Il y a une CLI (commande en mode ligne) quelque part qui montre toutes les routes drupales ... ne semble pas se souvenir de ce que c'était ... Je mettrai à jour (sauf si quelqu'un d'autre le sait)
sea26.2
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.