Score:0

รับเอนทิตีอ้างอิงภายในลิงค์ฟิลด์ได้อย่างไร

ธง br

ฉันอยู่ D9 ฉันมีย่อหน้าด้วย a ลิงค์ สนาม. ฉันต้องได้รับเอนทิตีที่อ้างอิงโดยทางโปรแกรม

สิ่งที่ฉันจัดการไปแล้วคือ:

       $nid = โมฆะ;
       $field_link = $paragraph->get('field_link')->อันดับแรก();
       $route_params = $field_link->getUrl()->getRouteParameters();
        
        ถ้า (isset ($route_params['node'])) {
          $nid = $route_params['โหนด'];
        }

       ถ้า ($ นิด) {
               ....
       }

แต่ดูค่อนข้างซับซ้อนสำหรับฉัน - และอาศัยความจริงที่ว่าเอนทิตีที่เชื่อมโยงเป็นประเภท 'โหนด' เท่านั้น ไม่มีฟังก์ชันบางอย่างที่ให้ข้อมูลโดยตรง\ ในวิธีที่มีประสิทธิภาพมากกว่านี้หรือ

Score:2
ธง ru

ฉันกำลังใช้รหัสนี้สำหรับงานที่คล้ายกันมาก:

/** @var $link \Drupal\Core\Url */
ถ้า (!$link->isRouted()) {
  /* ลิงก์ภายในที่ไม่ได้กำหนดเส้นทางหรือลิงก์ภายนอก */
  กลับ;
}

$route = $link->getRouteParameters();
$entityType = คีย์ ($ เส้นทาง);
$referencedEntity = โมฆะ;
พยายาม {
  $referencedEntity = \Drupal::entityTypeManager()
    ->getStorage($entityType)
    ->โหลด($route[$entityType]);
  $referencedEntity = \Drupal::service('entity.repository')
    ->getTranslationFromContext($referencedEntity);
}
จับ (โยน $t) {
  /* ไม่รู้ว่าจำเป็นไหม แต่ฉันไม่รู้ว่าอะไรจะเกิดขึ้นจาก getRouteParameters() */
  กลับ;
}

ถ้า (!($referencedEntity อินสแตนซ์ของ \Drupal\Core\Entity\ContentEntityBase)) {
  /* บางทีคุณอาจต้องการอนุญาตเอนทิตีประเภทต่างๆ ที่นี่ เช่น เว็บฟอร์มไม่ใช่เอนทิตีของเนื้อหา */
  กลับ;
}

/* ความสำเร็จ */
doStuff($referencedEntity);

โดยพื้นฐานแล้วเหมือนกับที่คุณทำอยู่แล้ว แต่คุณสามารถใช้คีย์เพื่อรับประเภทเอนทิตีและทำให้เป็นแบบทั่วไปมากขึ้น

4uk4 avatar
cn flag
ตัวอย่างโค้ดที่ยอดเยี่ยม เพื่อให้คาดเดาได้มากขึ้นว่ามีอะไรอยู่ใน getRouteParameters() ฉันจะตรวจสอบ getRouteName() ก่อนเพื่อหารูปแบบ เช่น `entity.ENTITY_TYPE.canonical`

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา