Score:1

ฉันจะโหลดวัตถุบันเดิลของเอนทิตีจากเอนทิตีที่โหลดได้อย่างไร

ธง in

ถ้าฉันต้องการรับวัตถุบันเดิลของเอนทิตีพร้อมโหนด ฉันสามารถทำได้ดังนี้:

$bundle_object = \Drupal::entityTypeManager()
  ->getStorage('node_type')
  ->โหลด($node->bundle());

แต่ดูเหมือนว่ายืดเยื้อเล็กน้อย มีวิธีรับวัตถุโดยตรงจากเอนทิตีหรือไม่? สิ่งที่ต้องการ $entity->getBundleObject()?

cn flag
ฉันสงสัยว่าคุณจะพบวิธีการทั่วไปสำหรับวิธีนี้ ไม่ใช่วิธีหนึ่งใน ContentEntityType หลักอยู่ดี - ชุดรวมเป็นทางเลือก ดังนั้นจึงไม่มีอ็อบเจ็กต์ที่จะให้เสมอไป
cn flag
@Clive ถูกต้อง หากคุณต้องการทำให้สั้นลง คุณสามารถสร้าง [Storage Handler](https://chromatichq.com/insights/creating-and-using-entity-storage-methods) ใหม่
sonfd avatar
in flag
โอเค ขอบคุณทุกคน ฉันไม่เห็นเลยคิดว่าเป็นกรณีนี้ แต่ไม่เคยรู้สึกดีกับการติดฉลากเลย
Score:1
ธง cn

ฟิลด์บันเดิลเป็นฟิลด์อ้างอิง และคุณสามารถโหลดวัตถุบันเดิลผ่านคุณสมบัติของฟิลด์ เอนทิตี:

$node_type = $node->type->entity;

ทั่วไปมากขึ้นสำหรับเอนทิตีเนื้อหาใดๆ:

ถ้า ($entity->getEntityType()->hasKey('มัด')) {
  $bundle = $entity->get($entity->getEntityType()->getKey('bundle'))->entity;
}
apaderno avatar
us flag
แทนที่จะเรียก `$entity->getEntityType()->hasKey('bundle')` แล้วตามด้วย `$entity->getEntityType()->getKey('bundle')` โค้ดสามารถเรียก `$entity-> getEntityType()->getKey('bundle')` ซึ่งจะส่งคืน `FALSE` เมื่อไม่มีคีย์ และชื่อคีย์เมื่อมีคีย์นั้นอยู่
4uk4 avatar
cn flag
ใช่ เมธอด *has* ไม่จำเป็นจริงๆ และสามารถลบออกได้ แต่ผู้คนจำนวนมากใช้มันเพื่อทำให้โค้ดอ่านง่ายขึ้น
4uk4 avatar
cn flag
มันทำให้ชัดเจนตามที่ @Clive แสดงความคิดเห็นว่าการรวมกลุ่มนั้นเป็นทางเลือก หากประเภทเอนทิตีมีบันเดิล จะต้องระบุคีย์บันเดิล

โพสต์คำตอบ

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