diff -u b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php --- b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php +++ b/core/modules/field/lib/Drupal/field/Entity/FieldConfig.php @@ -321,7 +321,9 @@ // Make sure all settings are present, so that a complete field // definition is passed to the various hooks and written to config. - $this->settings += $field_type['settings']; + if (isset($field_type['class'])) { + $this->settings += $field_type['class']::settings(); + } // Notify the entity storage controller. $entity_manager->getStorageController($this->entity_type)->onFieldCreate($this); @@ -510,10 +512,12 @@ // $this. $field_type_info = \Drupal::service('plugin.manager.field.field_type')->getDefinition($this->type); - $item_class = $field_type_info['class']; + $settings = array(); + if (isset($field_type_info['class'])) { + $settings = $field_type_info['class']::settings(); + } // @todo Convert instance settings to method. - $settings = $this->settings + $item_class::settings() + $field_type_info['instance_settings']; - return $settings; + return $this->settings + $settings + $field_type_info['instance_settings']; } /** diff -u b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php --- b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php +++ b/core/modules/field_ui/lib/Drupal/field_ui/Tests/ManageDisplayTest.php @@ -108,7 +108,7 @@ // Confirm that the extra settings are not updated on the settings form. $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit"); - $this->assertNoFieldByName($fieldname, 'foo'); + $this->assertFieldByName($fieldname, ''); // Test the empty setting formatter. $edit = array('fields[field_test][type]' => 'field_empty_setting'); @@ -199,9 +199,9 @@ $edit = array($fieldname => 'foo'); $this->drupalPostAjaxForm(NULL, $edit, "field_test_plugin_settings_update"); - // Confirm that the settings are updated on the settings form. + // Confirm that the extra settings are not updated on the settings form. $this->drupalPostAjaxForm(NULL, array(), "field_test_settings_edit"); - $this->assertFieldByName($fieldname, 'foo'); + $this->assertFieldByName($fieldname, ''); } /**