Bagaimana saya bisa mendapatkan judul halaman?


13

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

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

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.


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.


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');
  }

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.