Form validation handler for field_ui_field_edit_form().
field_ui_field_edit_form_submit().
function field_ui_field_edit_form_validate($form, &$form_state) {
// Take the incoming values as the $instance definition, so that the 'default
// value' gets validated using the instance settings being submitted.
$instance = $form['#instance'];
$field_name = $instance['field_name'];
$entity = $form['#entity'];
// Validate field cardinality.
$cardinality = $form_state['values']['field']['container']['cardinality'];
$cardinality_other = $form_state['values']['field']['container']['cardinality_other'];
if ($cardinality == 'other' && empty($cardinality_other)) {
form_error($form['field']['container']['cardinality_other'], t('Number of values is required.'));
}
if (isset($form['instance']['default_value_widget'])) {
$element = $form['instance']['default_value_widget'];
// Extract the 'default value'.
$items = array();
$instance
->getWidget()
->submit($entity, LANGUAGE_NOT_SPECIFIED, $items, $element, $form_state);
// Grab the field definition from $form_state.
$field_state = field_form_get_state($element['#parents'], $field_name, LANGUAGE_NOT_SPECIFIED, $form_state);
$field = $field_state['field'];
// Validate the value.
$errors = array();
$function = $field['module'] . '_field_validate';
if (function_exists($function)) {
$function(NULL, NULL, $field, $instance, LANGUAGE_NOT_SPECIFIED, $items, $errors);
}
// Report errors.
if (isset($errors[$field_name][LANGUAGE_NOT_SPECIFIED])) {
// Store reported errors in $form_state.
$field_state['errors'] = $errors[$field_name][LANGUAGE_NOT_SPECIFIED];
field_form_set_state($element['#parents'], $field_name, LANGUAGE_NOT_SPECIFIED, $form_state, $field_state);
// Assign reported errors to the correct form element.
$instance
->getWidget()
->flagErrors($entity, LANGUAGE_NOT_SPECIFIED, $items, $element, $form_state);
}
}
}