Jak mogę uzyskać tytuł strony?


13

drupal_get_title() został usunięty z Drupal 8. Jak mogę uzyskać tytuł strony w Drupal 8?

Odpowiedzi:


21

Jeśli sprawdzisz rekordy zmian, powinieneś znaleźć: drupal_set_title () i drupal_get_title () zostały usunięte .

Musisz przeczytać powiadomienie o zmianie wszystkich informacji, ale oto punkt wyjścia:

drupal_get_title ()

Ponieważ tytuły na trasach można teraz ustawiać na różne sposoby (patrz wyżej), drupal_get_title () został usunięty. Na jego miejscu powinieneś wywołać usługę title_resolver.

Drupal 7

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

Drupal 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
Przyjęta odpowiedź jest nieaktualna: zobacz gdzie indziej w tym wątku dla CurrentRouteMatch.
JP

7

Zgodnie z batch_test.module(D8.4) następujące elementy powinny działać dobrze:

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

Aby uzyskać więcej informacji, zobacz public function TitleResolver::getTitle.


0

Uwaga

Akceptowana odpowiedź na to pytanie jest nieaktualna: patrz Parametry żądania, nazwa trasy i obiekt trasy powinny być dostępne poprzez RouteMatch .

Należy użyć usługi current_route_match , aby pobrać bieżącą trasę, a następnie odczytać lub zmodyfikować jej parametry. To otacza każdą magię Symfony itp.

W kodzie proceduralnym używałbyś kodu podobnego do następującego.

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

W kodzie obiektowym należy użyć wstrzykiwania zależności i wstrzyknąć usługę.


Co zrobić, jeśli nie ma, $route->getDefault('_title');ale tylko $route->getDefault('_title_callback');?
leymannx

Na przykład na example.com/user/1
leymannx

2
To omija TitleResolver, więc nie obsługuje wszystkich sytuacji. api.drupal.org/api/drupal/…
imclean

Za pomocą tego rozwiązania otrzymasz nieprzetłumaczony tytuł.
Saud Alfadhli

-3

Drupal 8

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

Nie zaznaczyłem tej odpowiedzi w dół, ale wygląda na to, że ->get('_MAGIC')metoda jest niestety przestarzała i w większości usunięta z D8: drupal.org/node/2124749
JP
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.