drupal_get_title()
ถูกลบออกจาก Drupal 8. ฉันจะได้ชื่อหน้าใน Drupal 8 ได้อย่างไร
drupal_get_title()
ถูกลบออกจาก Drupal 8. ฉันจะได้ชื่อหน้าใน Drupal 8 ได้อย่างไร
คำตอบ:
หากคุณตรวจสอบบันทึกการเปลี่ยนแปลงคุณควรพบสิ่งต่อไปนี้: 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); } ?>
ตาม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
สำหรับข้อมูลเพิ่มเติมโปรดดูที่
การตอบสนองที่ได้รับการยอมรับสำหรับคำถามนี้มาจากวันที่: ดูพารามิเตอร์ขอชื่อเส้นทางและวัตถุเส้นทางควรจะเข้าถึงได้ผ่านทาง RouteMatch
คุณควรใช้บริการcurrent_route_matchเพื่อดึงข้อมูลเส้นทางปัจจุบันจากนั้นอ่านหรือแก้ไขพารามิเตอร์ สิ่งนี้หุ้มเวทมนตร์ของ Symfony และอื่น ๆ
ในรหัสขั้นตอนคุณจะต้องใช้รหัสคล้ายกับรหัสต่อไปนี้
$route = \Drupal::routeMatch()->getCurrentRouteMatch()->getRouteObject();
$title = $route->getDefault('_title');
ในรหัสเชิงวัตถุคุณควรใช้การฉีดพึ่งพาและฉีดบริการ
$route->getDefault('_title');
แต่มีเพียงอย่างเดียว$route->getDefault('_title_callback');
?
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