Sayfa başlığını nasıl alabilirim?


13

drupal_get_title() Drupal 8'den kaldırıldı. Drupal 8'deki sayfa başlığını nasıl alabilirim?

Yanıtlar:


21

Değişiklik kayıtlarını kontrol ederseniz aşağıdakileri bulmalısınız : drupal_set_title () ve drupal_get_title () kaldırıldı .

Tüm bilgiler için değişiklik bildirimini okumalısınız, ancak işte bir başlangıç ​​noktası:

drupal_get_title ()

Rotalardaki başlıklar artık çeşitli yollarla ayarlanabildiğinden (yukarıya bakın), drupal_get_title () kaldırıldı. Onun yerine title_resolver hizmetini çağırmalısınız.

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
Kabul edilen yanıt güncel değil: CurrentRouteMatch için bu iş parçacığının başka bir yerine bakın.
JP

7

Gereğince batch_test.module(D8.4) şu sadece para cezası çalışması gerekir:

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

Daha fazla bilgi için bkz public function TitleResolver::getTitle.


0

Not

Bu soru için kabul edilen yanıt güncel değil: Bkz. İstek parametreleri, rota adı ve rota nesnesine RouteMatch aracılığıyla erişilmelidir .

Geçerli rotayı almak için current_route_match hizmetini kullanmalı ve ardından parametrelerini okumalı veya değiştirmelisiniz. Bu herhangi bir Symfony vb büyü sarar.

Yordamsal kodda, aşağıdakine benzer bir kod kullanırsınız.

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

Nesneye yönelik kodda, bağımlılık enjeksiyonunu kullanmalı ve servisi enjekte etmelisiniz .


$route->getDefault('_title');Sadece a değil , ne yapmalı $route->getDefault('_title_callback');?
leymannx


2
Bu, TitleResolver'ı atlar, bu nedenle tüm durumları ele almaz. api.drupal.org/api/drupal/…
imclean

Bu çözümü kullanmak çevrilmemiş başlığı alacaktır.
Suud Alfadhli

-3

Drupal 8

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

Bu yanıtı işaretlemedim, ancak ->get('_MAGIC')yöntem maalesef kullanımdan kaldırılmış ve çoğunlukla D8'den kaldırılmış gibi görünüyor : drupal.org/node/2124749
JP
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.