drupal - 将 Drupal Field Collection 元素添加到自定义表单

标签 drupal drupal-7 drupal-forms drupal-field-collection

我想在我的自定义表单中添加一个 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/

相关文章:

php - 在 Drupal 7 中使用 SOAP Web 服务

组中的 drupal 7 form_alter 配置文件字段

php - 如何在 drupal 7 中制作像 Stackoverflow 这样的主菜单?

php - 我无法将 drupal 迁移到本地服务器

php - 德鲁帕尔 7 : Node fields in webform

https - 为什么谷歌分析 JavaScript 文件无法加载?

php - 不使用Drupal CMS的views_slideshow

当前页面的 Drupal token

php - Drupal 7 FAPI-在验证或提交处理程序中添加表单元素

programmatically-created - "two dimentionnal ' 的问题添加另一个项目'"with FormStateInterface::getTriggeringElement()