답변:
현재 경로 이름을 얻으려면 다음을 사용하십시오.
$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()
때로는 null을 반환합니다.
클래스 내부에있는 경우 올바르게 작업하려면 생성자에 경로 일치 서비스를 삽입 한 다음 다음과 같이 호출하십시오.
$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']