J'ai besoin d'identifier bundle
une entité à partir de son type
et id
.
Par exemple, si le type
«nœud» id
est 7 et que je peux obtenir «page» comme bundle
.
Merci
Utilisez entity_load
pour charger l'entité comme mentionné par @Nikhil.
Utilisez ensuite entity_extract_ids pour extraire le bundle. Exemple:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
La fonction entity_extract_ids
renvoie un tableau indexé numériquement (pas une table de hachage) contenant les éléments:
où 0
, 1
et 2
sont des indices de tableau. Cependant, l'approche utilisée par les modules core et contrib consiste à utiliser la list()
fonction.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Voici
le plus propreque j'ai obtenu du code de module des groupes organiques.Par exemple, je peux l'appeler comme:
Edit: Comme l'a souligné @Clive, la méthode ci-dessus dépend du module d'entité.
Voici une autre méthode qui ne dépend d'aucun module supplémentaire. Il est expliqué ici https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Copiez-collez cette méthode:
la source
$group_type, $gid
? et quelle est la valeur$bundle
?entity_load
, d'ailleurs, comment est-ce le plus propre?entity_metadata_wrapper()
soit plus propre que laentity_extract_ids()
méthode. De plus, vous comptez sur le module d'entité installé ...Essayez entity_load
Paramètres
$ entity_type : type d'entité à charger, par exemple nœud ou utilisateur.
$ ids : un tableau d'ID d'entité, ou FALSE pour charger toutes les entités.
$ conditions : (obsolète) Un tableau associatif de conditions sur la table de base, où les clés sont les champs de la base de données et les valeurs sont les valeurs que ces champs doivent avoir. Au lieu de cela, il est préférable d'utiliser EntityFieldQuery pour récupérer une liste des ID d'entité chargeables par cette fonction.
$ reset : Indique s'il faut réinitialiser le cache interne pour le type d'entité demandé.
Valeur de retour
Tableau d'objets d'entité indexés par leurs identifiants. Lorsqu'aucun résultat n'est trouvé, un tableau vide est renvoyé.
la source
Si vous voulez un moyen très léger, en termes de performances, pour obtenir le type de nœud à partir de l'ID de nœud - vous pouvez utiliser une seule requête de sélection sur la table des nœuds.
De cette façon, vous n'avez pas besoin d'appeler l'ensemble du système de hook d'entité, avec entity_load etc.
Il s'agit d'une seule requête de sélection utilisant l'ID de nœud indexé.
la source