Multiples field_collection en un mismo form?

We encourage users to post events happening in the community to the community events group on https://www.drupal.org.
dogix3's picture

Hola a todos!

Necesito ayuda con el siguiente caso, resulta lo siguiente:

Tengo una ventana multi-step en la cual en el primer paso inserto números de serie y el plazo de los mismas, esto lo hago mediante un field_collection el cual obtengo de un tipo de contenido (deadline_table) que importo al formulario haciendo uso del siguiente codigo

$node->type = 'deadline_table';
  //Fieldset de las series y plazos
  $form['add_series']['campos_de_coleccion'] = array();
  field_attach_form('node', $node, $form['add_series']['campos_de_coleccion'], $form_state, NULL, array('field_name' => 'field_series_series_field_set'));

  $form['next'] = array(
    '#type' => 'submit',
    '#value' => t('Next'),
    '#attributes' => array(
            'class' => array('btn btn-primary'),
    ),
  );

En este field_collection se ingresan multiples datos, baso en estos, en el segundo step genero otro formulario con etiquetas en las cuales se encuentra el nombre de cada serie y debajo de un field_collection para ingresar otros datos que van asociados a estas series, el codigo que utilizo es el siguiente:

function add_document_types_form($form, &$form_state) {
   
  $values = isset($form_state['multistep_values']['add_document_types']) ? $form_state['multistep_values']['add_document_types'] : array();
  /Se cargar los datos del formulario de seccion, en el cual se ingresaron los datos/
  $values_field_set_series = isset($form_state['multistep_values']['add_series']) ? $form_state['multistep_values']['add_series'] : array();
  if (isset($values_field_set_series)) {
    $form['add_document_types']['#tree'] = TRUE;
   
    for ($i=0; $i < count($values_field_set_series['field_series_series_field_set']['und'])-1; $i++) {
      /Se imprime la etiqueta/
      $form['add_document_types']['sub_section'.$i] = array(
        '#type' => 'markup',
        '#markup' => '<div class="">'.$values_field_set_series['field_series_series_field_set']['und'][$i]['field_serie_series_field_set']['und'][0]['value'].'</div>',
      );
      $node = new stdClass();
      $node->type = 'deadline_table';
      //Fieldset de los tipos documentales
      $form['add_document_types'][$i] = array();
      field_attach_form('node', $node, $form['add_document_types'][$i], $form_state, NULL, array('field_name' => 'field_doc_type_series_field_set'));

    }
  }
  dsm($form_state);
  $form['back'] = array(
    '#type' => 'submit',
    '#value' => t('Back'),
    '#attributes' => array(
            'class' => array('btn btn-primary'),
    ),
  );
 
  $form['next'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
    '#attributes' => array(
            'class' => array('btn btn-primary'),
    ),
  );
  return $form;
}

Y este me genera bien los campos, el problema viene acá:
Todos los field_collection inician con un campo.

Pero al agregar un campo nuevo en alguno de estos y luego agregar otro campo en otro field_collection a este ultimo se le agregar los campos que se agregaron anteriormente, es decir, si el primer field_collection tiene 7 campos y el segundo solo 1, al agregar uno nuevo al segundo este no tendrá 2 sino que 8, y así sucesivamente.

Existe alguna manera de poder realizar esto sin que los field_collections se vean afectados entre si, es decir, que cada uno sea independiente.

Pura vida!!