ตัวอย่างเดียวใน Drupal core สำหรับเส้นทางแบบไดนามิกที่ขึ้นอยู่กับข้อมูลที่ผู้ใช้บันทึกไว้คือ View with a page display ซึ่งใช้เวลานานมากในการบันทึก มุมมองต้องการเส้นทางสำหรับตัวกรองตามบริบท เว้นแต่คุณจะมีกรณีการใช้งานเฉพาะสำหรับเนื้อหา (โปรดแก้ไขคำถามของคุณหากคุณมี) วิธีที่ถูกต้องคือนามแฝง ในแบบฟอร์มแก้ไขโหนด คุณสามารถเพิ่มนามแฝงได้เพียงหนึ่งชื่อเท่านั้น แต่คุณสามารถเพิ่มได้อีก /admin/config/search/path. หากคุณต้องการในที่เดียว คุณสามารถเปลี่ยนรูปแบบการแก้ไขโหนดสำหรับหลายนามแฝง
หากคุณไม่ต้องการสร้างนามแฝงแต่ละรายการด้วยมือ และเส้นทางมีรูปแบบ คุณสามารถใช้ตัวประมวลผลเส้นทางได้ คุณสามารถสร้างนั่งร้านด้วย Drush
ตัวประมวลผลเส้นทาง drush gen
และใส่รูปแบบ regex ในวิธีการขาเข้า:
/modules/custom/mymodule/src/PathProcessor/PathProcessorMymodule.php
<?php
เนมสเปซ Drupal\mymodule\PathProcessor;
ใช้ Drupal\Core\PathProcessor\InboundPathProcessorInterface;
ใช้ Symfony\Component\HttpFoundation\Request;
/**
* ตัวประมวลผลเส้นทางเพื่อลบคำนำหน้า
*/
คลาส PathProcessorMymodule ใช้ InboundPathProcessorInterface {
/**
* {@inheritdoc}
*/
ฟังก์ชั่นสาธารณะ processInbound (เส้นทาง $, คำขอ $ คำขอ) {
กลับ preg_replace('#^/(ผู้เขียน|ผู้สนับสนุน)/#', '/', $เส้นทาง);
}
}
คุณจะได้รับเส้นทางเดิมในภายหลังด้วย
\Drupal::request()->getPathInfo()
หรือคุณสามารถเก็บคำนำหน้าไว้ในคุณสมบัติของบริการก่อนที่จะลบออกเพื่อให้ใช้ได้ทั่วโลก
หากการตรวจสอบของคุณสร้างผลลัพธ์ที่แสดงผล ให้เพิ่ม url.path
บริบทแคช