Necesito identificar bundle
una entidad a partir de su type
y id
.
Por ejemplo, si type
es 'nodo' y id
es 7, puedo obtener 'página' como bundle
.
Gracias
Use entity_load
para cargar la entidad como lo menciona @Nikhil.
Luego use entity_extract_ids , para extraer el paquete. Ejemplo:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
La función entity_extract_ids
devuelve una matriz indexada numéricamente (no una tabla hash) que contiene los elementos:
donde, 0
, 1
, y 2
son índices de matriz. Sin embargo, el enfoque utilizado por los módulos principales y contrib es utilizar la list()
función.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Aquí está
el más limpioque obtuve del código del módulo Grupos orgánicos.Por ejemplo, puedo llamarlo así:
Editar: como señaló @Clive, el método anterior depende del módulo de entidad.
Aquí hay otro método que no depende de ningún módulo adicional. Se explica aquí https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Copia pegando ese método:
fuente
$group_type, $gid
? y cual es el valor$bundle
?entity_load
, por cierto, ¿cómo es más limpio?entity_metadata_wrapper()
sea más limpio que elentity_extract_ids()
método. Además, confía en el módulo de entidad que se está instalando ...Intenta la entidad de carga
Parámetros
$ entity_type : el tipo de entidad a cargar, por ejemplo, nodo o usuario.
$ ids : una matriz de ID de entidad, o FALSE para cargar todas las entidades.
$ condiciones : (en desuso) Una matriz asociativa de condiciones en la tabla base, donde las claves son los campos de la base de datos y los valores son los valores que esos campos deben tener. En cambio, es preferible utilizar EntityFieldQuery para recuperar una lista de ID de entidad que esta función puede cargar.
$ reset : si se restablece la memoria caché interna para el tipo de entidad solicitada.
Valor de retorno
Una matriz de objetos de entidad indexados por sus identificadores. Cuando no se encuentran resultados, se devuelve una matriz vacía.
fuente
Si desea una forma muy liviana, en términos de rendimiento, para obtener el tipo de nodo de la identificación del nodo, puede usar una sola consulta de selección en la tabla de nodos.
De esa manera, no necesita invocar todo el sistema de enlace de entidad, con entity_load, etc.
Es una consulta de selección única que usa la identificación del nodo indexado.
fuente