Получить название маршрута текущей страницы

24

Название маршрута текущей страницы доступно в page.html.twig? Страница генерируется формой обратной связи по умолчанию.

Оана Хулпой
источник

Ответы:

57

Чтобы получить текущее название маршрута, используйте:

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

Вы можете добавить имя маршрута текущей страницы в качестве переменной в файле «.theme» вашей темы. Добавьте функцию _preprocess_page, как это, и очистите кеш drupal.

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

Затем вы можете получить доступ к page.html.twig следующим образом:

{{ route_name }}

Примечание: \Drupal::routeMatch()->getRouteName() иногда возвращает ноль.

Если вы находитесь внутри класса, чтобы сделать все правильно, вы захотите добавить сервис сопоставления маршрутов в конструктор и затем вызвать его следующим образом:

$this->currentRouteMatch->getRouteName()

Конструктор (и переменная) будет выглядеть так:

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

Если это класс обслуживания, вы должны передать его в службу в файле yaml в своем пользовательском модуле:

services:
  mymodule.service:
    class: Drupal\mymodule\MyCustomService
    arguments: ['@current_route_match']
oknate
источник
Где-то есть CLI (команда линейного режима), которая показывает все друпальные маршруты ... не могу вспомнить, что это было ... Я
обновлю