Ich muss bundle
eine Entität anhand ihrer type
und identifizieren id
.
Wenn zum Beispiel type
'node' und id
7 ist, erhalte ich möglicherweise 'page' as bundle
.
Vielen Dank
Verwenden Sie entity_load
diese Option, um die Entität wie von @Nikhil erwähnt zu laden.
Verwenden Sie dann entity_extract_ids , um das Bundle zu extrahieren. Beispiel:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
Die Funktion entity_extract_ids
gibt ein numerisch indiziertes Array (keine Hash-Tabelle) zurück, das die folgenden Elemente enthält:
wobei, 0
, 1
, und 2
sind Array - Indizes. Der Ansatz der Core- und Contrib-Module besteht jedoch darin, die list()
Funktion zu verwenden.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Hier ist
die sauberste, die ich ausdem Modulcode fürorganische Gruppen erhalten habe.Zum Beispiel kann ich es so nennen:
Bearbeiten: Wie @Clive hervorhob, hängt die obige Methode vom Entitätsmodul ab.
Hier ist eine andere Methode, die nicht von einem zusätzlichen Modul abhängt. Es wird hier erklärt https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Kopieren Sie das Einfügen dieser Methode:
quelle
$group_type, $gid
? und was ist der Wert in$bundle
?entity_load
, übrigens, wie es am saubersten ist?entity_metadata_wrapper()
es sauberer ist als dieentity_extract_ids()
Methode. Außerdem verlassen Sie sich darauf, dass das Entitätsmodul installiert wird ...Versuchen Sie entity_load
Parameter
$ entity_type : Der zu ladende Entitätstyp, z. B. Knoten oder Benutzer.
$ ids : Ein Array von Entitäts-IDs oder FALSE zum Laden aller Entitäten.
$ Bedingungen : (veraltet) Ein assoziatives Array von Bedingungen in der Basistabelle, wobei die Schlüssel die Datenbankfelder und die Werte die Werte sind, die diese Felder haben müssen. Stattdessen ist es vorzuziehen, EntityFieldQuery zu verwenden, um eine Liste von Entitäts-IDs abzurufen, die von dieser Funktion geladen werden können.
$ reset : Gibt an, ob der interne Cache für den angeforderten Entitätstyp zurückgesetzt werden soll.
Rückgabewert
Ein Array von Entitätsobjekten, die durch ihre IDs indiziert sind. Wenn keine Ergebnisse gefunden werden, wird ein leeres Array zurückgegeben.
quelle
Wenn Sie in Bezug auf die Leistung eine sehr einfache Methode zum Abrufen des Knotentyps aus der Knoten-ID wünschen, können Sie eine einzelne Auswahlabfrage für die Knotentabelle verwenden.
Auf diese Weise müssen Sie nicht das gesamte Entity-Hook-System mit entity_load usw. aufrufen.
Es handelt sich um eine einzelne Auswahlabfrage unter Verwendung der indizierten Knoten-ID.
quelle