3

我想在我的自定义表单中添加一个字段集合项。我的表单是自定义事件注册(将数据保存到事件注册节点),字段集合在事件注册内容类型中可用。我尝试了很多代码和尝试,但没有一个有效。

module_load_include('inc', 'field_collection', 'field_collection.pages');
$field_collection_item = entity_create('field_collection_item', array('field_name' => 'field_participant'));
$entity_form = field_collection_item_form($form, $form_state, $field_collection_item);
$form['participant'] = $entity_form;

这会将字段集合项加载到我的表单中,但我无法添加另一个字段集合项,并且表单中的其他元素(公司、电话等)被复制。我发现另一行可能应该添加:

$field_collection_item->setHostEntity('node', $node);

但在那一刻我还没有 $node 并且我不确定它是否必须是。

4

1 回答 1

1

我看到你遇到的问题。您正在构建字段集合表单,然后您尝试构建一个额外的字段集合表单,但未附加内容。

我认为相反,您想使用以下内容

module_load_include('inc', 'field_collection', 'field_collection.pages');
$field_collection_item = entity_create('field_collection_item', array('field_name' => 'field_collection_name'));
field_attach_form('field_collection_item', $field_collection_item, $form['participant'], $form_state);

这将允许您通过更改 field_attach_form 中的位置来附加大量字段集合项

module_load_include('inc', 'field_collection', 'field_collection.pages');
for ($i=0;$i<5;$i++) {
  $field_collection_item = entity_create('field_collection_item', array('field_name' => 'field_collection_name'));
  $form['category'][$i] = array();
  field_attach_form('field_collection_item', $field_collection_item, $form['category'][$i], $form_state);
}

确保在您的原始 $form 上设置 #parent 属性,否则您的数据将在提交时连接在一起

于 2013-11-27T18:05:44.123 回答