Название маршрута текущей страницы доступно в 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']