Мне нужно идентифицировать bundle
сущность из ее type
и id
.
Например, если type
это «узел» и id
7, я могу получить «страницу» как bundle
.
Спасибо
Используйте entity_load
для загрузки объекта, как упомянуто @Nikhil.
Затем используйте entity_extract_ids , чтобы извлечь пакет. Пример:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
Функция entity_extract_ids
возвращает численно индексированный массив (не хеш-таблицу), содержащий элементы:
где, 0
, 1
, и 2
являются индексы массива. Тем не менее, подход, используемый модулями core и contrib, заключается в использовании list()
функции.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Вот
самый чистый,который я получил из кода модуля Organic groups.Например, я могу назвать это так:
Редактировать: как указывал @Clive, метод выше зависит от модуля сущности.
Вот еще один метод, который не зависит от какого-либо дополнительного модуля. Это объясняется здесь https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Скопируйте и вставьте этот метод:
источник
$group_type, $gid
? а в чем ценность$bundle
?entity_load
, кстати, как его самое чистое?entity_metadata_wrapper()
это чище, чемentity_extract_ids()
метод. Кроме того, вы полагаетесь на устанавливаемый модуль сущности ...Попробуйте entity_load
параметры
$ entity_type : тип объекта для загрузки, например, узел или пользователь.
$ ids : массив идентификаторов сущностей или FALSE для загрузки всех сущностей.
$ condition : (устарело) Ассоциативный массив условий в базовой таблице, где ключи - это поля базы данных, а значения - значения, которые должны иметь эти поля. Вместо этого предпочтительно использовать EntityFieldQuery для получения списка идентификаторов сущностей, загружаемых этой функцией.
$ reset : сбросить ли внутренний кэш для запрошенного типа объекта.
Возвращаемое значение
Массив объектов-сущностей, проиндексированных по их идентификаторам. Если результатов не найдено, возвращается пустой массив.
источник
Если вам нужен очень легкий способ получения типа узла по идентификатору узла с точки зрения производительности - вы можете использовать один запрос на выборку для таблицы узлов.
Таким образом, вам не нужно вызывать всю систему ловушек сущностей, с entity_load и т. Д.
Это один запрос на выборку, использующий индексированный идентификатор узла.
источник