Comment puis-je obtenir le libellé lisible par l'homme d'un bundle à partir d'une entité chargée.
Disons que je veux obtenir le label d'un nœud du bundle my_article qui est "Mon article génial"
// Load a node
$node = Drupal::entityManager()->getStorage('node')->load(4);
print $node->bundle(); // prints the machine-readable name. e.g. 'my_article'.
print $node->getEntityType()->getBundleLabel(); // prints 'content type'.
Je ne peux obtenir que le nom lisible par machine du bundle ou le Label d'entité ("type de contenu", "terme de taxonomie", etc.), mais comment obtenir le Label du bundle?
PS Je préférerais qu'il n'utilise pas de classes / fonctions obsolètes
Notez que la réponse acceptée s'applique spécifiquement aux entités de noeud mais toutes les entités ont des bundles. De nombreuses entités, comme
user
oumenu_link_content
(pour les liens de menu personnalisés), n'ont qu'un seul ensemble qui correspond au type d'entité lui-même.Le
entity_type.bundle.info
service, implémenté par Drupal \ Core \ Entity \ EntityTypeBundleInfo , permet d'accéder aux informations sur les ensembles d'entités. Ses méthodesgetAllBundleInfo()
etgetBundleInfo($entity_type_id)
renvoient respectivement un tableau composé par type d'entité et par nom de machine de regroupement, le premier contenant alors un tableau de regroupements codés par nom de machine de regroupement. Chaque paquet a unelabel
clé avec le nom convivial du paquet traduit.Voici un exemple qui montre la différence entre les noms de machine d'entité de contenu, les étiquettes, les noms de machine de bundle et les étiquettes de bundle. Le code suppose qu'il existe au moins un lien de menu personnalisé avec un ID de
1
. Il suppose également qu'il existe unarticle
type de nœud (bundle), qu'il existe au moins un nœud avec un ID de1
et que le nœud est du type de nœud (bundle)article
.Assurez-vous d'utiliser l' injection de dépendances dans la mesure du possible dans votre code plutôt que de vous fier aux méthodes statiques de la
Drupal
classe.la source
Les travaux suivants fonctionnent également:
la source
Si vous n'êtes pas sûr du
$entity
type, il peut s'agir:la source
Pas la solution la plus efficace, mais par souci d'exhaustivité, cela fonctionne:
ou
la source