ฉันจะได้รับชื่อหน้าได้อย่างไร


13

drupal_get_title() ถูกลบออกจาก Drupal 8. ฉันจะได้ชื่อหน้าใน Drupal 8 ได้อย่างไร

คำตอบ:


21

หากคุณตรวจสอบบันทึกการเปลี่ยนแปลงคุณควรพบสิ่งต่อไปนี้: drupal_set_title () และ drupal_get_title () ถูกลบออกไป

คุณจะต้องอ่านประกาศเปลี่ยนแปลงสำหรับข้อมูลทั้งหมด แต่นี่คือจุดเริ่มต้น:

drupal_get_title ()

เนื่องจากชื่อเรื่องเส้นทางสามารถตั้งค่าได้หลายวิธี (ดูด้านบน), drupal_get_title () จึงถูกลบ คุณควรโทรหาบริการ 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
การตอบรับที่ยอมรับล้าสมัย: ดูที่อื่นในหัวข้อนี้สำหรับ CurrentRouteMatch
JP

7

ตามbatch_test.module(D8.4) ต่อไปนี้ควรใช้งานได้:

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

public function TitleResolver::getTitleสำหรับข้อมูลเพิ่มเติมโปรดดูที่


0

บันทึก

การตอบสนองที่ได้รับการยอมรับสำหรับคำถามนี้มาจากวันที่: ดูพารามิเตอร์ขอชื่อเส้นทางและวัตถุเส้นทางควรจะเข้าถึงได้ผ่านทาง RouteMatch

คุณควรใช้บริการcurrent_route_matchเพื่อดึงข้อมูลเส้นทางปัจจุบันจากนั้นอ่านหรือแก้ไขพารามิเตอร์ สิ่งนี้หุ้มเวทมนตร์ของ Symfony และอื่น ๆ

ในรหัสขั้นตอนคุณจะต้องใช้รหัสคล้ายกับรหัสต่อไปนี้

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

ในรหัสเชิงวัตถุคุณควรใช้การฉีดพึ่งพาและฉีดบริการ


จะทำอย่างไรถ้าไม่มี$route->getDefault('_title');แต่มีเพียงอย่างเดียว$route->getDefault('_title_callback');?
leymannx

ตัวอย่างเช่นในexample.com/user/1
leymannx

2
สิ่งนี้ข้าม TitleResolver ดังนั้นจึงไม่สามารถจัดการกับทุกสถานการณ์ได้ api.drupal.org/api/drupal/ …
imclean

การใช้โซลูชันนี้จะได้รับชื่อที่ไม่ได้แปล
Saud Alfadhli

-3

Drupal 8

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

ฉันไม่ได้ทำเครื่องหมายคำตอบนี้ลง แต่ดูเหมือนว่า->get('_MAGIC')วิธีการจะถูกคัดค้านและถูกลบออกไปส่วนใหญ่จาก D8: drupal.org/node/2124749
JP
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.