Kabul edilen yanıtın özellikle düğüm varlıkları için geçerli olduğunu, ancak tüm varlıkların paketlerinin olduğunu unutmayın. user
Veya menu_link_content
(özel menü bağlantıları için) gibi birçok varlığın yalnızca varlık türünün kendisine karşılık gelen bir paketi vardır.
entity_type.bundle.info
Tarafından uygulanan servis, Drupal \ Çekirdek \ Varlık \ EntityTypeBundleInfo , varlık demeti bilgilere erişim sağlar. Yöntemleri getAllBundleInfo()
ve getBundleInfo($entity_type_id)
sırasıyla varlık türüne ve paket makine adına göre anahtarlanmış bir dizi döndürür; ilk olarak daha sonra paket makine adına göre anahtarlanmış bir dizi paket içerir. Her paketin label
çevrilmiş paket kolay adına sahip bir anahtarı vardır.
Aşağıda, içerik varlığı makine adları, etiketler, paket makine adları ve paket etiketleri arasındaki farkı gösteren bir örnek bulunmaktadır. Kod, kimliğine sahip en az bir özel menü bağlantısı olduğunu varsayar 1
. Ayrıca bir article
düğüm tipi (demet) olduğunu, kimliğine sahip en az bir düğümün 1
olduğunu ve düğümün düğüm tipinde (demet) olduğunu varsayar 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;
Sınıfın statik yöntemlerine güvenmek yerine kodunuzda mümkünse bağımlılık enjeksiyonu kullandığınızdan emin olun Drupal
.