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 に答える