我正在尝试将一个自定义字段分配给分类法。我已经尝试过了:
-rw-rw-r-- 1 singh singh 0 Aug 20 04:47 sample 32_bill 4524242424.pdf
-rw-rw-r-- 1 singh singh 0 Aug 20 04:08 sample32_bill4524242424.pdf
-rw-rw-r-- 1 singh singh 0 Aug 20 04:08 sample32_bill452424.pdf
-rw-rw-r-- 1 singh singh 0 Aug 20 04:08 sample32_bill45.pdf
$ terms现在存储词汇表“ zeme”中的所有术语。问题是当我打印此变量时,它没有显示我需要获取的自定义字段。 知道如何获取该自定义字段吗? 我的代码如下:
$vid = 'zeme';
$terms =\Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadTree($vid);
答案 0 :(得分:2)
这是loadTree function
的官方文档:
TermStorage::loadTree
使用loadTree
函数时,它只会为您提供最少的数据,以节省执行时间。您会看到默认情况下将$load_entities
参数设置为false
。
bool $ load_entities :如果为TRUE,则将在 术语对象。否则,它们是直接从中查询的部分对象 {taxonomy_term_data}表可节省执行时间和内存 列出大量术语时的消耗。默认为FALSE。
因此,如果要获取每个分类术语的所有数据,则必须将$load_entities
设置为true
。
$vid = 'zeme';
$terms =\Drupal::entityTypeManager()
->getStorage('taxonomy_term')
->loadTree($vid, 0, null, true);
答案 1 :(得分:0)
通过这篇帖子Get custom fields assigned to taxonomy找到了这种方式:
$contact_countries = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")->loadTree('contact_country');
$terms = array();
foreach($contact_countries as $contact_countrie) {
$terms[] = array(
'contact_country' => $contact_countrie->name,
'contact_phone' => \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid)->get('field_phone')->getValue()[0]['value'],
'contact_flag' => \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid)->get('field_category_flag')->entity->uri->value,
);
}
非常有用!