Form validation handler.
array $form: An associative array containing the structure of the form.
array $form_state: An associative array containing the current state of the form.
Overrides FormInterface::validateForm
public function validateForm(array &$form, array &$form_state) {
// Take the incoming values as the $this->instance definition, so that the 'default
// value' gets validated using the instance settings being submitted.
$field_name = $this->instance['field_name'];
$entity = $form['#entity'];
$entity_form_display = $form['#entity_form_display'];
if (isset($form['instance']['default_value_widget'])) {
$element = $form['instance']['default_value_widget'];
// Extract the 'default value'.
$items = array();
$entity_form_display
->getWidget($this->instance
->getField()->id)
->extractFormValues($entity, Language::LANGCODE_NOT_SPECIFIED, $items, $element, $form_state);
// Grab the field definition from $form_state.
$field_state = field_form_get_state($element['#parents'], $field_name, Language::LANGCODE_NOT_SPECIFIED, $form_state);
$field = $field_state['field'];
// Validate the value.
$errors = array();
$function = $field['module'] . '_field_validate';
if (function_exists($function)) {
$function(NULL, $field, $this->instance, Language::LANGCODE_NOT_SPECIFIED, $items, $errors);
}
// Report errors.
if (isset($errors[$field_name][Language::LANGCODE_NOT_SPECIFIED])) {
// Store reported errors in $form_state.
$field_state['errors'] = $errors[$field_name][Language::LANGCODE_NOT_SPECIFIED];
field_form_set_state($element['#parents'], $field_name, Language::LANGCODE_NOT_SPECIFIED, $form_state, $field_state);
// Assign reported errors to the correct form element.
$entity_form_display
->getWidget($this->instance
->getField()->id)
->flagErrors($entity, Language::LANGCODE_NOT_SPECIFIED, $items, $element, $form_state);
}
}
}