ध्यान दें कि स्वीकृत उत्तर विशेष रूप से नोड संस्थाओं के लिए लागू होता है, लेकिन सभी संस्थाओं में बंडल होते हैं। कई इकाइयां, जैसे ( user
या menu_link_content
कस्टम मेनू लिंक के लिए), केवल एक बंडल है जो इकाई प्रकार से मेल खाती है।
entity_type.bundle.info
सेवा, द्वारा कार्यान्वित Drupal \ कोर \ इकाई \ EntityTypeBundleInfo , इकाई बंडल जानकारी के लिए उपयोग प्रदान करता है। इसके तरीके getAllBundleInfo()
और getBundleInfo($entity_type_id)
रिटर्न एक प्रकार से क्रमशः इकाई प्रकार और बंडल मशीन के नाम से टाइप किए जाते हैं, जिसमें पूर्व में बंडल मशीन नाम के द्वारा बंडल किए गए बंडलों की एक सरणी होती है। प्रत्येक बंडल में label
अनुवादित बंडल फ्रेंडली नाम के साथ एक कुंजी है।
नीचे एक उदाहरण दिया गया है जो सामग्री इकाई मशीन के नाम, लेबल, बंडल मशीन के नाम और बंडल लेबल के बीच अंतर दिखाता है। कोड मानता है कि आईडी के साथ कम से कम एक कस्टम मेनू लिंक है 1
। यह भी मानता है कि एक article
नोड प्रकार (बंडल) है, जिसमें एक आईडी के साथ कम से कम एक नोड 1
है और नोड नोड प्रकार (बंडल) का है article
।
<?php
$entity_type_manager = \Drupal::entityTypeManager();
$bundle_info = \Drupal::service("entity_type.bundle.info")->getAllBundleInfo();
$current_user = \Drupal::currentUser()->getAccount();
// Prints "user".
print $current_user->getEntityTypeId() . PHP_EOL;
// Prints "User".
print $current_user->getEntityType()->getLabel() . PHP_EOL;
// Prints "user".
print $current_user->bundle() . PHP_EOL;
// Prints "User".
print $bundle_info[$current_user->getEntityTypeId()][$current_user->bundle()]['label'] . PHP_EOL;
$my_menu_link = $entity_type_manager->getStorage('menu_link_content')->load(1);
// Prints "menu_link_content".
print $my_menu_link->getEntityTypeId() . PHP_EOL;
// Prints "Custom menu link".
print $my_menu_link->getEntityType()->getLabel() . PHP_EOL;
// Prints "menu_link_content".
print $my_menu_link->bundle() . PHP_EOL;
// Prints "Custom menu link".
print $bundle_info[$my_menu_link->getEntityTypeId()][$my_menu_link->bundle()]['label'] . PHP_EOL;
$my_article = $entity_type_manager->getStorage('node')->load(1);
// Prints "node".
print $my_article->getEntityTypeId() . PHP_EOL;
// Prints "Content".
print $my_article->getEntityType()->getLabel() . PHP_EOL;
// Prints "article".
print $my_article->bundle() . PHP_EOL;
// Prints "Article".
print $bundle_info[$my_article->getEntityTypeId()][$my_article->bundle()]['label'] . PHP_EOL;
कक्षा के स्थिर तरीकों पर निर्भर होने के बजाय अपने कोड में जहां संभव हो वहां निर्भरता इंजेक्शन का उपयोग करना सुनिश्चित करें Drupal
।