Comment puis-je obtenir le titre de la page?


13

drupal_get_title() a été supprimé de Drupal 8. Comment puis-je obtenir le titre de la page dans Drupal 8?

Réponses:


21

Si vous vérifiez les enregistrements de modification, vous devriez trouver les éléments suivants: drupal_set_title () et drupal_get_title () ont été supprimés .

Vous devrez lire l'avis de modification pour toutes les informations, mais voici un point de départ:

drupal_get_title ()

Comme les titres sur les routes peuvent désormais être définis de différentes manières (voir ci-dessus), drupal_get_title () a été supprimé. À sa place, vous devez appeler le service 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
La réponse acceptée est obsolète: voir ailleurs dans ce fil pour CurrentRouteMatch.
JP

7

Selon batch_test.module(D8.4), les éléments suivants devraient fonctionner correctement:

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

Pour plus d'informations, voir public function TitleResolver::getTitle.


0

Remarque

La réponse acceptée pour cette question est obsolète: voir Paramètres de la demande, nom de l'itinéraire et objet de l'itinéraire doivent être accessibles via RouteMatch .

Vous devez utiliser le service current_route_match pour récupérer l'itinéraire actuel, puis lire ou modifier ses paramètres. Cela enveloppe toute magie Symfony etc.

Dans le code procédural, vous utiliseriez un code similaire au suivant.

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

Dans le code orienté objet, vous devez utiliser l' injection de dépendances et injecter le service.


Que faire s'il n'y en a pas $route->getDefault('_title');mais seulement un $route->getDefault('_title_callback');?
leymannx

Par exemple sur example.com/user/1
leymannx

2
Cela contourne le TitleResolver et ne gère donc pas toutes les situations. api.drupal.org/api/drupal/…
imclean

L'utilisation de cette solution obtiendra le titre non traduit.
Saud Alfadhli

-3

Drupal 8

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

Je n'ai pas noté cette réponse, mais il semble que la ->get('_MAGIC')méthode soit malheureusement obsolète et principalement supprimée de D8: drupal.org/node/2124749
JP
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.