Назва маршруту для поточної сторінки доступна в page.html.twig
? Сторінка створюється формою зворотного зв’язку за замовчуванням.
Назва маршруту для поточної сторінки доступна в page.html.twig
? Сторінка створюється формою зворотного зв’язку за замовчуванням.
Відповіді:
Щоб отримати поточну назву маршруту, використовуйте:
$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']