Bagaimana saya bisa mendapatkan judul halaman?

13

drupal_get_title() telah dihapus dari Drupal 8. Bagaimana saya bisa mendapatkan judul halaman di Drupal 8?

pengguna353253
sumber

Jawaban:

21

Jika Anda memeriksa catatan perubahan, Anda harus menemukan yang berikut: drupal_set_title () dan drupal_get_title () telah dihapus .

Anda harus membaca pemberitahuan perubahan untuk semua info, tetapi inilah titik awalnya:

drupal_get_title ()

Karena judul pada rute sekarang dapat diatur dengan berbagai cara (lihat di atas), drupal_get_title () telah dihapus. Sebagai gantinya, Anda harus memanggil layanan 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);
  }
?>
Chapabu
sumber
1
Respons yang diterima kedaluwarsa: lihat di bagian lain di utas ini untuk CurrentRouteMatch.
JP
7

Per batch_test.module(D8.4) berikut ini akan berfungsi dengan baik:

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

Untuk info lebih lanjut, lihat public function TitleResolver::getTitle.

leymannx
sumber
0

Catatan

Respons yang diterima untuk pertanyaan ini sudah usang : Lihat parameter Permintaan, nama rute, dan objek rute harus diakses melalui RouteMatch .

Anda harus menggunakan layanan current_route_match untuk mengambil rute saat ini, dan kemudian membaca atau memodifikasi parameternya. Ini membungkus sihir Symfony dll.

Dalam kode prosedural, Anda akan menggunakan kode yang mirip dengan yang berikut ini.

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

Dalam kode berorientasi objek, Anda harus menggunakan injeksi ketergantungan dan menyuntikkan layanan.

JP
sumber
Apa yang harus dilakukan jika tidak ada $route->getDefault('_title');tetapi hanya satu $route->getDefault('_title_callback');?
leymannx
Misalnya pada example.com/user/1
leymannx
2
Ini melewati TitleResolver sehingga tidak menangani semua situasi. api.drupal.org/api/drupal/…
imclean
Menggunakan solusi ini akan mendapatkan judul yang tidak diterjemahkan.
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
sumber
Saya tidak menandai respons ini, tetapi sepertinya ->get('_MAGIC')metode ini sayangnya tidak digunakan lagi dan sebagian besar dihapus dari D8: drupal.org/node/2124749
JP