如何访问 drupal 8 中的节点字段
Posted
技术标签:
【中文标题】如何访问 drupal 8 中的节点字段【英文标题】:How to access to node fields in drupal 8 【发布时间】:2021-06-04 15:52:26 【问题描述】:我遇到了一些问题, 我正在加载一些节点,我想获取一些值字段,这就是我的字段
我正在像这样加载我的节点:
$nids = \Drupal::entityQuery('node')
->condition('type','items', '=')
->execute();
$nodes = Node::loadMultiple($nids);
foreach ($nodes as $key => $node)
kint($node);
$array[] = array(
'name_item_en' => $node->get(field_name_item)->value,
);
但我不知道如何获取 en
fr
和 pt
字段值
你能帮帮我吗? 问候 马里奥
【问题讨论】:
【参考方案1】:您可以加载每种语言的翻译,然后获取相应字段的值,如下所示:
foreach ($nodes as $key => $node)
$array[] = array(
'name_item_en' => $node->getTranslation('en')->get('field_name_item')->value,
'name_item_fr' => $node->getTranslation('fr')->get('field_name_item')->value,
'name_item_pt' => $node->getTranslation('pt')->get('field_name_item')->value
);
如果en
是您网站上的默认语言,您可能不需要加载它的翻译:
'name_item_en' => $node->get('field_name_item')->value
【讨论】:
嗨 Kien 我有一个问题,getTranslation 它与英语(en)和西班牙语(es)完美配合,但是当我使用葡萄牙语(pt)和法语(fr)时,我收到了这个错误: InvalidArgumentException:指定的翻译语言 (fr) 无效。在 Drupal\Core\Entity\ContentEntityBase->getTranslation() (core\lib\Drupal\Core\Entity\ContentEntityBase.php 的第 873 行)。你知道为什么会这样吗?问候马里奥 @skycomputer2 这个answer 可能会帮助你以上是关于如何访问 drupal 8 中的节点字段的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 drupal 6 中的自定义字段将自定义版本的节点/添加表单放在视图中?