Wie erhalte ich das lesbare Etikett eines Bundles von einer geladenen Entität?
Nehmen wir an, ich möchte die Bezeichnung eines Knotens des Bundles my_article erhalten, der "My awesome article" ist.
// 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'.
Ich kann nur den maschinenlesbaren Namen des Bundles oder die Bezeichnung der Entität ("Inhaltstyp", "Taxonomiebegriff" usw.) abrufen, aber wie erhalte ich die Bezeichnung des Bundles?
PS Ich würde es vorziehen, keine veralteten Klassen / Funktionen zu verwenden
Beachten Sie, dass die akzeptierte Antwort speziell für Knotenentitäten gilt, aber alle Entitäten über Bündel verfügen. Viele Entitäten, wie
user
odermenu_link_content
(für benutzerdefinierte Menüverknüpfungen), haben nur ein Bundle, das dem Entitätstyp selbst entspricht.Der
entity_type.bundle.info
von Drupal \ Core \ Entity \ EntityTypeBundleInfo implementierte Dienst bietet Zugriff auf Informationen zu Entitätspaketen. Seine MethodengetAllBundleInfo()
undgetBundleInfo($entity_type_id)
geben ein Array zurück, das nach Entitätstyp und Bundle-Maschinenname verschlüsselt ist, wobei ersteres dann ein Array von Bundles enthält, die nach Bundle-Maschinennamen verschlüsselt sind. Jedes Bundle hat einenlabel
Schlüssel mit dem Anzeigenamen des übersetzten Bundles.Unten sehen Sie ein Beispiel, das den Unterschied zwischen Computernamen, Beschriftungen, Computernamen und Beschriftungen für Inhaltsentitäten zeigt. Der Code setzt voraus, dass mindestens ein benutzerdefinierter Menü-Link mit einer ID von vorhanden ist
1
. Es wird auch davonarticle
ausgegangen, dass es einen Knotentyp (Bündel) gibt, dass es mindestens einen Knoten mit der ID von1
gibt und dass der Knoten vom Knotentyp (Bündel) istarticle
.Verwenden Sie in Ihrem Code nach Möglichkeit die Abhängigkeitsinjektion, anstatt sich auf die statischen Methoden der
Drupal
Klasse zu verlassen.quelle
Folgendes funktioniert auch:
quelle
Wenn Sie sich über den
$entity
Typ nicht sicher sind , kann es sein:quelle
Nicht die effizienteste Lösung, aber der Vollständigkeit halber funktioniert Folgendes:
oder
quelle