페이지 제목을 어떻게 알 수 있습니까?


13

drupal_get_title() Drupal 8에서 제거되었습니다. Drupal 8에서 페이지 제목을 얻는 방법은 무엇입니까?

답변:


21

변경 기록을 확인하면 drupal_set_title () 및 drupal_get_title ()이 제거되었습니다 .

모든 정보에 대한 변경 공지를 읽어야하지만 여기에 출발점이 있습니다.

drupal_get_title ()

이제 경로의 제목을 다양한 방법으로 설정할 수 있으므로 (위 참조) drupal_get_title ()이 제거되었습니다. 대신 title_resolver 서비스를 호출해야합니다.

드루팔 7

<?php
  $title = drupal_get_title();
?>

드루팔 8

<?php
  $request = \Drupal::request();
  if ($route = $request->attributes->get(\Symfony\Cmf\Component\Routing\RouteObjectInterface::ROUTE_OBJECT)) {
    $title = \Drupal::service('title_resolver')->getTitle($request, $route);
  }
?>

1
허용 된 응답이 오래되었습니다. CurrentRouteMatch에 대해서는이 스레드의 다른 곳을 참조하십시오.
JP

7

batch_test.module(D8.4) 다음은 잘 작동합니다 :

$request     = \Drupal::request();
$route_match = \Drupal::routeMatch();
$title       = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());

자세한 내용은을 참조하십시오 public function TitleResolver::getTitle.


0

노트

이 질문에 대한 승인 된 응답이 오래되었습니다. 요청 매개 변수, 라우트 이름 및 라우트 오브젝트에 액세스하려면 RouteMatch를 참조하십시오 .

current_route_match 서비스를 사용하여 현재 경로를 검색 한 다음 해당 매개 변수를 읽거나 수정해야합니다. 이것은 모든 Symfony 등의 마술을 감 쌉니다.

절차 코드에서는 다음 코드와 유사한 코드를 사용합니다.

$route = \Drupal::routeMatch()->getCurrentRouteMatch()->getRouteObject();
$title = $route->getDefault('_title');

객체 지향 코드에서는 의존성 주입 을 사용하고 서비스를 주입해야합니다.


더있을 경우 무엇을 할 없습니다 $route->getDefault('_title');만 만 $route->getDefault('_title_callback');?
leymannx


2
이것은 TitleResolver를 무시하므로 모든 상황을 처리하지는 않습니다. api.drupal.org/api/drupal/…
부정하다

이 솔루션을 사용하면 번역되지 않은 제목이 표시됩니다.
Saud Alfadhli

-3

드루팔 8

$request = \Drupal::request();
  // Assuming the Request is $request.
  if ($request->attributes->has('_title')) {
    return $request->attributes->get('_title');
  }

이 응답을 표시하지는 않았지만 ->get('_MAGIC')메소드가 불행히도 더 이상 사용되지 않고 D8에서 대부분 제거 된 것처럼 보입니다 . drupal.org/node/2124749
JP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.