【问题标题】:How to access items in a field collection (Drupal 7)如何访问字段集合中的项目(Drupal 7)
【发布时间】:2017-01-20 18:12:22
【问题描述】:

我正在尝试访问字段集合中数组中的图像 uri,但我不知道如何访问它们。如果我查看开发模块,我可以看到数组中第一个图像 uri 的位置如下所示:

['field_text_and_image'][0]['entity']['field_collection_item'][2474]['field_about_accreditation_image'][0]['#item']['uri']

我很困惑,因为我有 'field_get_items' 方法来访问我的目标字段集合......

$text_and_image_field = field_get_items('node', $node, 'field_text_and_image');

...如果我打印/渲染这个变量,我希望看到一个数组打印在页面上,但没有创建任何内容。但是,我在页面上设置了一个条件,检查“$text_and_image_field”字段集合是否存在,是否确实创建了一个元素,并且确实创建了一个显示该字段存在的元素。我似乎无法访问它的任何内容。

那么,为什么字段集合不打印任何内容?如何循环遍历“field_about_accreditation”数组以打印出所有图像 uri?

编辑*

我对这个问题进行了更多尝试,并意识到当我应该使用 print_r 时尝试渲染“$text_and_image_field”的值是错误的,现在这样做给了我这个数组值:

Array ( [0] => Array ( [value] => 2474 [revision_id] => 174439 ) )

基于访问字段集合的旧代码,每隔一次将值分配给字段集合时发生的情况是编写以下语句:

$value = field_view_value('node', $node, '$field_text_and_image', $text_and_image_field[$i]);
$field_collection = $value['entity']['field_collection_item'][key($value['entity']['field_collection_item'])];

但是,当我尝试打印出 $value(我预计会是 '2474')时,什么都没有显示。

【问题讨论】:

    标签: php arrays loops drupal drupal-7


    【解决方案1】:

    Hi 字段集合存储为单独的实体,因此您需要执行实体加载以获取数据。

    $text_and_image_field = entity_load('field_collection_item', array($entity_id));
    

    在这种情况下,看起来实体 id 是 2474,您可以根据需要操作数组。

    你的结束代码可能是这样的:

    $imageuri = entity_load('field_collection_item', array(2474))[2474]->field_about_accreditation_image['und'][0]['uri'];
    

    【讨论】:

    • 您也可以使用带有上下文过滤器的视图?
    【解决方案2】:

    假设您已经加载了$node,并且在其中您有字段集合字段field_images。然后你可以得到它的第一个元素:

    $collection_entity_id = $node->field_photo['und'][0]['value'];
    

    现在你有了实体 ID,你必须加载完整的实体:

    $full_entity = field_collection_item_load($collection_entity_id);
    

    如果你加载了实体,你可以通过通常的方式访问实体字段:

    $title = $full_box->title;
    $image_path =- $full_entity->field_image_path['und'][0]['value'];
    

    是的,我知道这不是获取价值的最干净的方式,请不要在我脸上揉搓。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-26
      • 2021-11-27
      • 1970-01-01
      相关资源
      最近更新 更多