我正在尝试修改已经存在的节点中的字段集合,以便可以更改 3 数组中第一个元素上的图像。问题是,当我执行 entity_load 或 entity_load_single 时未设置 hostEntity 信息,所以当我做一个:
$field_collection_item->save(true); // with or without the true
// OR
$fc_wrapper->save(true); // with or without the true
我收到以下错误:
Exception: Unable to save a field collection item without a valid reference to a host entity. in FieldCollectionItemEntity->save()
当我 print_r 字段集合实体时,hostEntity:protected 字段确实是空的。我的字段集合设置如下:
- field_home_experts
- 专家图像 <--- 只想更改此数据并将其余数据保留在下面
- field_expert_image
- 图片
- 专家姓名
- field_expert_name
- 文本
- 专家头衔
- field_expert_title
- 文本
- 专家图像 <--- 只想更改此数据并将其余数据保留在下面
这是我试图用来修改现有节点字段集合的代码:
$node = getNode(1352); // Get the node I want to modify
// There can be up to 3 experts, and I want to modify the image of the first expert
$updateItem = $node->field_home_experts[LANGUAGE_NONE][0];
if ($updateItem) { // Updating
// Grab the field collection that currently exists in the 0 spot
$fc_item = reset(entity_load('field_collection_item', array($updateItem)));
// Wrap the field collection entity in the field API wrapper
$fc_wrapper = entity_metadata_wrapper('field_collection_item', $fc_item);
// Set the new image in place of the current
$fc_wrapper->field_expert_image->set((array)file_load(4316));
// Save the field collection
$fc_wrapper->save(true);
// Save the node with the new field collection (not sure this is needed)
node_save($node);
}
任何帮助将不胜感激,我对整个 Drupal 还是很陌生(最终用户或开发人员)