Ruft den Routennamen der aktuellen Seite ab

24

Der Routenname der aktuellen Seite ist in page.html.twig? Verfügbar . Die Seite wird mit dem Standard-Feedback-Formular generiert.

Oana Hulpoi
quelle

Antworten:

57

Verwenden Sie zum Abrufen des aktuellen Routennamens Folgendes:

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

Sie können den Routennamen der aktuellen Seite als Variable in die ".theme" -Datei Ihres Themas einfügen. Fügen Sie eine _preprocess_page-Funktion wie diese hinzu und leeren Sie den Drupal-Cache.

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

Dann können Sie in page.html.twig wie folgt zugreifen:

{{ route_name }}

Hinweis: \Drupal::routeMatch()->getRouteName() Gibt manchmal null zurück.

Wenn Sie sich in einer Klasse befinden, sollten Sie den Routen-Match-Service in den Konstruktor einfügen und ihn dann folgendermaßen aufrufen, um die Dinge richtig zu machen:

$this->currentRouteMatch->getRouteName()

Der Konstruktor (und die Variable) sehen folgendermaßen aus:

  /**
   * 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;
  }

Wenn es sich um eine Serviceklasse handelt, übergeben Sie sie in der yaml-Datei in Ihrem benutzerdefinierten Modul an den Service:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']
oknate
quelle
Es gibt eine CLI (Zeilenmodus - Befehl) , dass irgendwo zeigt alle Drupal Routen ... nicht zu erinnern scheinen , was es war ... Ich werde aktualisieren (es sei denn , jemand anderes weiß)
sea26.2