ชื่อเส้นทางของหน้าปัจจุบันมีอยู่ในpage.html.twig
? หน้าถูกสร้างขึ้นโดยแบบฟอร์มความคิดเห็นเริ่มต้น
ชื่อเส้นทางของหน้าปัจจุบันมีอยู่ในpage.html.twig
? หน้าถูกสร้างขึ้นโดยแบบฟอร์มความคิดเห็นเริ่มต้น
คำตอบ:
ในการรับชื่อเส้นทางปัจจุบันให้ใช้:
$route_name = \Drupal::routeMatch()->getRouteName();
คุณสามารถเพิ่มชื่อเส้นทางของหน้าปัจจุบันเป็นตัวแปรในไฟล์ ".theme" ของธีมของคุณ เพิ่มฟังก์ชัน _preprocess_page เช่นนี้และล้างแคช drupal
/**
* Implements hook_preprocess_page().
*
*/
function mytheme_preprocess_page(&$variables) {
$variables['route_name'] = \Drupal::routeMatch()->getRouteName();
}
จากนั้นคุณสามารถเข้าถึงได้ใน page.html.twig ดังนี้:
{{ route_name }}
หมายเหตุ: \Drupal::routeMatch()->getRouteName()
บางครั้งจะคืนค่าว่าง
หากคุณอยู่ในชั้นเรียนเพื่อทำสิ่งต่าง ๆ อย่างถูกต้องคุณจะต้องฉีดบริการจับคู่เส้นทางในตัวสร้างแล้วเรียกมันว่า:
$this->currentRouteMatch->getRouteName()
ตัวสร้าง (และตัวแปร) จะเป็นดังนี้:
/**
* The current route match.
*
* @var \Drupal\Core\Routing\RouteMatchInterface
*/
protected $currentRouteMatch;
/**
* Constructs a new ThemeTestSubscriber.
*
* @param \Drupal\Core\Routing\RouteMatchInterface $current_route_match
*/
public function __construct(RouteMatchInterface $current_route_match) {
$this->currentRouteMatch = $current_route_match;
}
หากเป็นคลาสบริการคุณจะต้องส่งผ่านไปยังบริการในไฟล์ yaml ในโมดูลที่กำหนดเองของคุณ:
services:
mymodule.service:
class: Drupal\mymodule\MyCustomService
arguments: ['@current_route_match']