diff -u b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php --- b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Form/FieldInstanceEditForm.php @@ -139,14 +139,14 @@ $form['instance']['settings']['#weight'] = 10; // Add handling for default value. - if ($element = $item->defaultValuesForm($form, $form_state)) { + if (empty($this->instance['default_value_function']) && $element = $item->defaultValuesForm($form, $form_state)) { $element += array( '#type' => 'details', '#title' => t('Default value'), '#description' => t('The default value for this field, used when creating new content.'), ); + $form['instance']['default_value'] = $element; } - $form['instance']['default_value'] = $element; $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array( @@ -165,8 +165,10 @@ * {@inheritdoc} */ public function validateForm(array &$form, array &$form_state) { - $item = $this->getFieldItem($form['#entity'], $this->instance['field_name']); - $item->defaultValuesFormValidate($form['instance']['default_value'], $form, $form_state); + if (isset($form['instance']['default_value'])) { + $item = $this->getFieldItem($form['#entity'], $this->instance['field_name']); + $item->defaultValuesFormValidate($form['instance']['default_value'], $form, $form_state); + } } /** @@ -174,8 +176,14 @@ */ public function submitForm(array &$form, array &$form_state) { // Handle the default value. - $item = $this->getFieldItem($form['#entity'], $this->instance['field_name']); - $this->instance['default_value'] = $item->defaultValuesFormSubmit($form['instance']['default_value'], $form, $form_state); + if (isset($form['instance']['default_value'])) { + $item = $this->getFieldItem($form['#entity'], $this->instance['field_name']); + $default_value = $item->defaultValuesFormSubmit($form['instance']['default_value'], $form, $form_state); + } + else { + $default_value = array(); + } + $this->instance['default_value'] = $default_value; // Merge incoming values into the instance. foreach ($form_state['values']['instance'] as $key => $value) { diff -u b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php --- b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageFieldsTest.php @@ -292,8 +292,8 @@ $langcode = Language::LANGCODE_NOT_SPECIFIED; $admin_path = 'admin/structure/types/manage/' . $this->type . '/fields/' . $instance->id(); - $element_id = "edit-$field_name-$langcode-0-value"; - $element_name = "{$field_name}[$langcode][0][value]"; + $element_id = "edit-default-value-input-$field_name-$langcode-0-value"; + $element_name = "default_value_input[{$field_name}][$langcode][0][value]"; $this->drupalGet($admin_path); $this->assertFieldById($element_id, '', 'The default value widget was empty.'); only in patch2: unchanged: --- a/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php +++ b/core/modules/file/lib/Drupal/file/Plugin/field/widget/FileWidget.php @@ -25,7 +25,6 @@ * settings = { * "progress_indicator" = "throbber" * }, - * default_value = FALSE * ) */ class FileWidget extends WidgetBase { only in patch2: unchanged: --- a/core/modules/file/lib/Drupal/file/Type/FileItem.php +++ b/core/modules/file/lib/Drupal/file/Type/FileItem.php @@ -47,4 +47,9 @@ public function getPropertyDefinitions() { return static::$propertyDefinitions[$key]; } + /** + * {@inheritdoc} + */ + public function defaultValuesForm(array &$form, array &$form_state) { } + } only in patch2: unchanged: --- a/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php +++ b/core/modules/image/lib/Drupal/image/Plugin/field/widget/ImageWidget.php @@ -9,7 +9,6 @@ use Drupal\field\Annotation\FieldWidget; use Drupal\Core\Annotation\Translation; -use Drupal\field\Plugin\Type\Widget\WidgetBase; use Drupal\file\Plugin\field\widget\FileWidget; use Drupal\Core\Entity\EntityInterface; use Drupal\Core\Entity\Field\FieldInterface; @@ -27,7 +26,6 @@ * "progress_indicator" = "throbber", * "preview_image_style" = "thumbnail", * }, - * default_value = FALSE * ) */ class ImageWidget extends FileWidget { only in patch2: unchanged: --- a/core/modules/image/lib/Drupal/image/Type/ImageItem.php +++ b/core/modules/image/lib/Drupal/image/Type/ImageItem.php @@ -55,4 +55,9 @@ public function getPropertyDefinitions() { return static::$propertyDefinitions[$key]; } + /** + * {@inheritdoc} + */ + public function defaultValuesForm(array &$form, array &$form_state) { } + } only in patch2: unchanged: --- a/core/modules/node/lib/Drupal/node/Tests/NodeAccessFieldTest.php +++ b/core/modules/node/lib/Drupal/node/Tests/NodeAccessFieldTest.php @@ -101,7 +101,7 @@ function testNodeAccessAdministerField() { // Modify the field default as the content admin. $edit = array(); $default = 'Sometimes words have two meanings'; - $edit["{$this->field_name}[$langcode][0][value]"] = $default; + $edit["default_value_input[{$this->field_name}][$langcode][0][value]"] = $default; $this->drupalPost( "admin/structure/types/manage/page/fields/node.page.{$this->field_name}", $edit,