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