Form submission 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::submitForm
public function submitForm(array &$form, array &$form_state) {
$entity = $form['#entity'];
$entity_form_display = $form['#entity_form_display'];
// Handle the default value.
if (isset($form['instance']['default_value_widget'])) {
$element = $form['instance']['default_value_widget'];
// Extract field values.
$items = array();
$entity_form_display
->getWidget($this->instance
->getField()->id)
->extractFormValues($entity, Language::LANGCODE_NOT_SPECIFIED, $items, $element, $form_state);
$this->instance['default_value'] = $items ? $items : NULL;
}
// Handle widget settings.
$options = $entity_form_display
->getComponent($this->instance
->getField()->id);
$options['settings'] = $form_state['values']['instance']['widget']['settings'];
$entity_form_display
->setComponent($this->instance
->getField()->id, $options)
->save();
unset($form_state['values']['instance']['widget']);
// Merge incoming values into the instance.
foreach ($form_state['values']['instance'] as $key => $value) {
$this->instance[$key] = $value;
}
$this->instance
->save();
drupal_set_message(t('Saved %label configuration.', array(
'%label' => $this->instance
->label(),
)));
if ($this->instance['required'] && empty($this->instance['default_value']) && empty($this->instance['default_value_function']) && $this->instance['widget']['type'] == 'field_hidden') {
drupal_set_message(t('Field %label is required and uses the "hidden" widget. You might want to configure a default value.', array(
'%label' => $this->instance['label'],
)), 'warning');
}
$form_state['redirect'] = $this
->getNextDestination();
}