如何访问 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 frpt 字段值

你能帮帮我吗? 问候 马里奥

【问题讨论】:

【参考方案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 8/9 中根据节点引用配置视图块?

如何使用 drupal 6 中的自定义字段将自定义版本的节点/添加表单放在视图中?

如何在drupal 8中的主题字段

如何在 Drupal 8 中使用 Twig 获取 field_image 路径

如何根据 Drupal 中的 cck 归档数据计算节点数

当一个 CT 引用另一个 CT 时,如何消除视图中的重复 Drupal 节点?