현재 페이지의 경로 이름을 가져옵니다


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() 때로는 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']

어딘가에 모든 drupal 경로를 보여주는 CLI (line mode command)가 있습니다 ... 그것이 무엇인지 기억하지 못하는 것 같습니다 ... (다른 사람이 알지 않는 한) 업데이트 할 것입니다
sea26.2
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.