คำตอบ:
ฉันไม่แน่ใจว่ามีฟังก์ชั่นโดยตรงหรือไม่ แต่มีหนึ่งเส้นทางคือการใช้บริการตัวจัดการนามแฝงของเส้นทางเพื่อค้นหาเส้นทางภายในจากนั้นให้ regex สำหรับรหัสโหนดที่ถูกต้องเพื่อดำเนินการโหลดวัตถุบน:
$path = \Drupal::service('path.alias_manager')->getPathByAlias('/this-is-the-alias');
if(preg_match('/node\/(\d+)/', $path, $matches)) {
$node = \Drupal\node\Entity\Node::load($matches[1]);
}
คุณสามารถใช้รหัสต่อไปนี้เพื่อรับและโหลดเอนทิตีและสามารถเข้าถึงค่าได้
use \Drupal\Core\Url;
$alias = \Drupal::service('path.alias_manager')->getPathByAlias('/etapes-de-la-vie');
$params = Url::fromUri("internal:" . $alias)->getRouteParameters();
$entity_type = key($params);
$node = \Drupal::entityTypeManager()->getStorage($entity_type)->load($params[$entity_type]);
//to use dpm you need the devel module
dpm($node->nid->value);
ติดตั้งโมดูล devel แล้วใช้รายการแถบเครื่องมือ devel ข้อมูลเส้นทางปัจจุบัน
ผลลัพธ์นี้ใน URL นี้ซึ่งคุณสามารถพิมพ์โดยตรงและระบุเส้นทางใด ๆ ที่การติดตั้ง drupal ของคุณเป็นพารามิเตอร์การสืบค้น:
/devel/routes/item?path=alias
เมื่อเป็นโหนดคุณจะพบ id ของโหนดในพารามิเตอร์ raw ที่ส่วนท้ายของตัวแปรเส้นทางที่แสดง
$path
/this-is-the-alias
ครั้งหนึ่งเคยเป็นเมื่อรูทพา ธ (node/{id}
) เป็นอีกชื่อแทน #migrationstruggles แต่มันก็มีอยู่ด้วยชื่อแทนอื่น ๆ