Form submission handler for field_ui_field_edit_form().
field_ui_field_edit_form_validate().
function field_ui_field_edit_form_submit($form, &$form_state) {
$instance = $form['#instance'];
$field = $form['#field'];
$entity = $form['#entity'];
// Save field cardinality.
$cardinality = $form_state['values']['field']['container']['cardinality'];
$cardinality_other = $form_state['values']['field']['container']['cardinality_other'];
if ($cardinality == 'other') {
$cardinality = $cardinality_other;
}
$form_state['values']['field']['cardinality'] = $cardinality;
unset($form_state['values']['field']['container']);
// Merge incoming values into the field.
$field = array_merge($field, $form_state['values']['field']);
try {
field_update_field($field);
} catch (Exception $e) {
drupal_set_message(t('Attempt to update field %label failed: %message.', array(
'%label' => $instance['label'],
'%message' => $e
->getMessage(),
)), 'error');
return;
}
// Handle the default value.
if (isset($form['instance']['default_value_widget'])) {
$element = $form['instance']['default_value_widget'];
// Extract field values.
$items = array();
$instance
->getWidget()
->submit($entity, LANGUAGE_NOT_SPECIFIED, $items, $element, $form_state);
$instance['default_value'] = $items ? $items : NULL;
}
// Merge incoming values into the instance.
foreach ($form_state['values']['instance'] as $key => $value) {
$instance[$key] = $value;
}
field_update_instance($instance);
drupal_set_message(t('Saved %label configuration.', array(
'%label' => $instance['label'],
)));
$form_state['redirect'] = field_ui_next_destination($instance['entity_type'], $instance['bundle']);
}