Як я можу отримати назву сторінки?


13

drupal_get_title() було видалено з Drupal 8. Як я можу отримати заголовок сторінки в Drupal 8?

Відповіді:


21

Якщо ви перевіряєте записи змін, ви повинні знайти такі: drupal_set_title () та drupal_get_title () були видалені .

Вам потрібно буде прочитати повідомлення про зміну всієї інформації, але ось початковий пункт:

drupal_get_title ()

Оскільки назви маршрутів тепер можна встановлювати різними способами (див. Вище), drupal_get_title () було видалено. На його місце слід зателефонувати до служби title_resolver.

Drupal 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');а лише a $route->getDefault('_title_callback');?
leymannx

Наприклад на example.com/user/1
leymannx

2
Це обходить TitleResolver, тому не справляється з усіма ситуаціями. api.drupal.org/api/drupal/…
imclean

Використовуючи це рішення, ви отримаєте неперекладений заголовок.
Сауд Альфадлі

-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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.