รับชื่อเส้นทางของหน้าปัจจุบัน


24

ชื่อเส้นทางของหน้าปัจจุบันมีอยู่ในpage.html.twig? หน้าถูกสร้างขึ้นโดยแบบฟอร์มความคิดเห็นเริ่มต้น

คำตอบ:


57

ในการรับชื่อเส้นทางปัจจุบันให้ใช้:

$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']

มี CLI (คำสั่งโหมดบรรทัด) อยู่ที่ไหนสักแห่งที่แสดงเส้นทาง drupal ทั้งหมด ... ไม่สามารถจำได้ว่ามันคืออะไร ... ฉันจะอัปเดต (เว้นแต่จะมีคนอื่นรู้)
ทะเล 26.2
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.