2017-01-20 84 views
1

我想访问图像uri的字段集合中的数组,但我不知道如何访问它们。如果我看devel模块中,我可以看到数组中的第一个图像URI的位置,看起来像这样:如何访问字段集合中的项目(Drupal 7)

['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?

编辑*

我在这个问题采取了一些更刺,意识到我做的努力使“$ text_and_image_field”的值的错误时,我应该一直在使用print_r的,现在这样做使我这个数组值:

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')时,不显示任何内容。

回答

0

嗨领域集合存储为一个单独的实体,所以你将需要做一个实体负载来获取数据。

$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']; 
+0

你也可以使用带有上下文过滤器的视图? – GHaddon

0

让我们说,你已经装载$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']; 

是的,我知道这是不是最清洁的方式来获得的价值,请不要擦在我的脸上。

相关问题