Добавление элемента Drupal Field Collection в настраиваемую форму

Я хочу добавить элемент коллекции полей в свою настраиваемую форму. Моя форма - это настраиваемая регистрация событий (данные будут сохраняться в узле регистрации событий), а коллекция полей доступна в типе содержимого регистрации событий. Я перепробовал много кодов и попыток, но ни один из них не работает.

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, и я не уверен, что это должно быть.


person danyg    schedule 26.08.2013    source источник


Ответы (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 в исходной форме $, иначе ваши данные будут объединены при отправке.

person user3042914    schedule 27.11.2013