Come posso ottenere il titolo della pagina?


13

drupal_get_title() è stato rimosso da Drupal 8. Come posso ottenere il titolo della pagina in Drupal 8?

Risposte:


21

Se controlli i record delle modifiche dovresti trovare quanto segue: drupal_set_title () e drupal_get_title () sono stati rimossi .

Dovrai leggere l'avviso di modifica per tutte le informazioni, ma ecco un punto di partenza:

drupal_get_title ()

Poiché i titoli sui percorsi ora possono essere impostati in vari modi (vedi sopra), drupal_get_title () è stato rimosso. Al suo posto dovresti chiamare il servizio 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 risposta accettata non è aggiornata: vedere altrove in questo thread per CurrentRouteMatch.
JP,

7

Secondo batch_test.module(D8.4) il seguente dovrebbe funzionare bene:

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

Per maggiori informazioni vedi public function TitleResolver::getTitle.


0

Nota

La risposta accettata per questa domanda non è aggiornata: vedi Parametri richiesta, nome percorso e oggetto route devono essere accessibili tramite RouteMatch .

È necessario utilizzare il servizio current_route_match per recuperare il percorso corrente, quindi leggere o modificarne i parametri. Questo avvolge qualsiasi magia di Symfony ecc.

Nel codice procedurale, useresti un codice simile al seguente.

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

Nel codice orientato agli oggetti, è necessario utilizzare l' iniezione delle dipendenze e iniettare il servizio.


Cosa fare se non c'è $route->getDefault('_title');ma solo un $route->getDefault('_title_callback');?
leymannx,

Ad esempio su example.com/user/1
leymannx

2
Questo ignora il TitleResolver, quindi non gestisce tutte le situazioni. api.drupal.org/api/drupal/…
imclean

Usando questa soluzione otterrai il titolo non tradotto.
Saud Alfadhli,

-3

Drupal 8

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

Non ho annullato questa risposta, ma sembra che il ->get('_MAGIC')metodo sia sfortunatamente deprecato e principalmente rimosso da D8: drupal.org/node/2124749
JP
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.