Multiples field_collection en un mismo form?

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!!

Costa Rica

Group events

Add to calendar

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: