Wie kann ich den Seitentitel erhalten?

13

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

user353253
quelle

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);
  }
?>
Chapabu
quelle
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.

Leymannx
quelle
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.

JP
quelle
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');
  }
Neelam Chaudhary
quelle
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