Отримайте назву маршруту для поточної сторінки


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']

Десь є CLI (команда лінійного режиму), яка показує всі друпальські маршрути ...
Можливо,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.