我想在我的自定义表单中添加一个 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,我不确定它必须是。
最佳答案
我看到了您遇到的问题。您正在构建字段收集表单,然后您尝试构建一个额外的字段收集表单,但没有附加内容。
我认为你想使用以下内容
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 属性,否则您的数据将在提交时合并在一起
关于drupal - 将 Drupal Field Collection 元素添加到自定义表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18447025/