Wie kann ich den Seitentitel erhalten?


13

drupal_get_title() wurde aus Drupal 8 entfernt. Wie kann ich den Seitentitel in Drupal 8 erhalten?

Antworten:


21

Wenn Sie die Änderungsdatensätze überprüfen, sollten Sie Folgendes finden: drupal_set_title () und drupal_get_title () wurden entfernt .

Sie müssen den Änderungshinweis für alle Informationen lesen, aber hier ist ein Ausgangspunkt:

drupal_get_title ()

Da Titel auf Routen jetzt auf verschiedene Arten festgelegt werden können (siehe oben), wurde drupal_get_title () entfernt. An seiner Stelle sollten Sie den Dienst title_resolver aufrufen.

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
Die akzeptierte Antwort ist veraltet: Informationen zu CurrentRouteMatch finden Sie an anderer Stelle in diesem Thread.
JP

7

Per batch_test.module(D8.4) sollte folgende gut funktionieren:

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

Weitere Informationen finden Sie unter public function TitleResolver::getTitle.


0

Hinweis

Die akzeptierte Antwort auf diese Frage ist veraltet: Siehe Anforderungsparameter, Routenname und Routenobjekt sollten über RouteMatch abgerufen werden .

Sie sollten den Dienst current_route_match verwenden , um die aktuelle Route abzurufen und dann ihre Parameter zu lesen oder zu ändern. Dies umhüllt jede Symfony usw. Magie.

Im prozeduralen Code würden Sie Code verwenden, der dem folgenden ähnlich ist.

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

In objektorientiertem Code sollten Sie die Abhängigkeitsinjektion verwenden und den Dienst injizieren.


Was tun, wenn es keine, $route->getDefault('_title');sondern nur eine gibt $route->getDefault('_title_callback');?
Leymannx

Zum Beispiel auf example.com/user/1
leymannx

1
Dies umgeht den TitleResolver und behandelt nicht alle Situationen. api.drupal.org/api/drupal/…
unrein

Wenn Sie diese Lösung verwenden, erhalten Sie den nicht übersetzten Titel.
Saud Alfadhli

-3

Drupal 8

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

Ich habe diese Antwort nicht notiert , aber es sieht so aus, als ob die ->get('_MAGIC')Methode leider veraltet und größtenteils aus D8 entfernt ist: drupal.org/node/2124749
JP
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.