我想在我的自定义表单中添加一个Field Collection Item。我的表单是自定义事件注册(将数据保存到事件注册节点),并且字段集合在事件注册内容类型中可用。 我尝试了许多代码并尝试但没有一个能够工作。
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,我不确定它是不是。
答案 0 :(得分: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);
}
确保在原始$表单上设置#parent属性,否则您的数据将在提交时连接在一起