ฉันจะรับเลเบลชนิดโหนดจากอ็อบเจ็กต์โหนดได้อย่างไร?


12

ฉันกำลังพยายามรับป้ายผนึก (โหนดประเภทป้ายกำกับ) ของโหนดจากวัตถุโหนดใน Drupal 8

ใช้งานได้ แต่ดูเหมือนยืดยาว:

$node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name');

จะมีวิธีอื่นในการรับป้ายกำเป็นไปได้ในวิธีที่ซับซ้อนน้อยลงหรือไม่


6
$node->type->entity->label();อาจจะสง่างามไปกว่านี้อีกแล้ว? ฉันไม่แน่ใจว่าจะมีเวอร์ชั่นที่สั้นกว่านี้ในขณะนี้
Clive

2
ยังทำงานในเทมเพลตทวิก: {{node.type.entity.label}}
oknate

คำตอบ:





5

ลองรหัสนี้

use Drupal\node\Entity\NodeType;

$types = NodeType::loadMultiple();
$bundle = $node->bundle(); 
$type_name = $types[$bundle]->label();

2
ที่โหลดโหนดทุกประเภทเพียงเพื่อรับเลเบลหนึ่ง บิตไม่มีประสิทธิภาพดีกว่าเพียงแค่โหลดสิ่งที่คุณต้องการ
Berdir

ตกลง! มันเป็นเพียงฐานในรหัสของ @No Sssweat
MrD

@Berdir ขอบคุณสำหรับการชี้ว่า ฉันไม่ต้องการที่จะกิ้งก่าคำถามดังนั้นฉันจะปล่อยให้มันเป็นคำตอบที่ได้รับการยอมรับ ฉันกำลังใช้รหัสในคำตอบของฉันเองแทน
ไม่มี Sssweat

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