diff --git a/field_collection.module b/field_collection.module index 98f59a2..20d703a 100644 --- a/field_collection.module +++ b/field_collection.module @@ -1390,7 +1390,6 @@ function field_collection_field_widget_render_required($element) { * FAPI validation of an individual field collection element. */ function field_collection_field_widget_embed_validate($element, &$form_state, $complete_form) { - $instance = field_widget_instance($element, $form_state); $field = field_widget_field($element, $form_state); $field_parents = $element['#field_parents']; $field_name = $element['#field_name']; @@ -1403,15 +1402,17 @@ function field_collection_field_widget_embed_validate($element, &$form_state, $c if (isset($field_state['entity'][$element['#delta']])) { $field_collection_item = $field_state['entity'][$element['#delta']]; } - elseif ($form_state['values'][$field_state['array_parents'][0]][$field_state['array_parents'][1]][$element['#delta']]) { - $field_collection_item = clone $field_state['entity'][0]; - foreach ($form_state['values'][$field_state['array_parents'][0]][$field_state['array_parents'][1]][$element['#delta']] as $key => $value) { - if (property_exists($field_collection_item, $key)) { - $field_collection_item->{$key} = $value; + else { + $field_values = drupal_array_get_nested_value($form_state['values'], $field_state['array_parents']); + if ($field_values[$element['#delta']]) { + $field_collection_item = entity_create('field_collection_item', array('field_name' => $field['field_name'])); + foreach ($field_values[$element['#delta']] as $key => $value) { + if (property_exists($field_collection_item, $key)) { + $field_collection_item->{$key} = $value; + } } } } - // Handle a possible language change. if (field_collection_item_is_translatable()) { $handler = entity_translation_get_handler('field_collection_item', $field_collection_item);