Eu preciso identificar bundle
uma entidade a partir de type
e id
.
Por exemplo, se type
is é 'node' e id
é 7, posso obter 'page' como bundle
.
obrigado
Use entity_load
para carregar a entidade conforme mencionado por @Nikhil.
Em seguida, use entity_extract_ids , para extrair o pacote. Exemplo:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
A função entity_extract_ids
retorna uma matriz indexada numericamente (não uma tabela de hash) contendo os elementos:
onde, 0
, 1
, e 2
são índices de matriz. No entanto, a abordagem usada pelos módulos core e contrib é usar a list()
função.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Aqui está
o mais limpoque recebi do código do módulo de grupos orgânicos.Por exemplo, eu posso chamar assim:
Edit: Como o @Clive apontou, o método acima depende do módulo da entidade.
Aqui está outro método que não depende de nenhum módulo extra. É explicado aqui https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Copie colando esse método:
fonte
$group_type, $gid
? e qual é o valor$bundle
?entity_load
, a propósito, como é mais limpo?entity_metadata_wrapper()
seja mais limpo que oentity_extract_ids()
método. Além disso, você confia no módulo de entidade que está sendo instalado ...Tente entity_load
Parâmetros
$ entity_type : o tipo de entidade a ser carregado, por exemplo, nó ou usuário.
$ ids : uma matriz de IDs de entidade ou FALSE para carregar todas as entidades.
$ conditions : (descontinuado) Uma matriz associativa de condições na tabela base, onde as chaves são os campos do banco de dados e os valores são os valores que esses campos devem ter. Em vez disso, é preferível usar EntityFieldQuery para recuperar uma lista de IDs de entidades carregáveis por essa função.
$ reset : se deve redefinir o cache interno para o tipo de entidade solicitado.
Valor de retorno
Uma matriz de objetos de entidade indexados por seus IDs. Quando nenhum resultado é encontrado, uma matriz vazia é retornada.
fonte
Se você deseja uma maneira muito leve, em termos de desempenho, para obter o tipo de nó a partir da identificação do nó - é possível usar uma única consulta de seleção na tabela de nós.
Dessa forma, você não precisa invocar todo o sistema de ganchos de entidade, com entity_load etc.
É uma consulta de seleção única usando o ID do nó indexado.
fonte