diff --git a/core/modules/editor/editor.module b/core/modules/editor/editor.module index 4ccea91890d..0fb4267e776 100644 --- a/core/modules/editor/editor.module +++ b/core/modules/editor/editor.module @@ -247,7 +247,9 @@ function editor_form_filter_admin_format_submit($form, FormStateInterface $form_ $original_editor->delete(); } - if ($editor_plugin = $form_state->get('editor_plugin')) { + $editor_set = $form_state->getValue(['editor', 'editor']) !== ""; + $subform_array_exists = (!empty($form['editor']['settings']['subform']) && is_array($form['editor']['settings']['subform'])); + if (($editor_plugin = $form_state->get('editor_plugin')) && $editor_set && $subform_array_exists) { $subform_state = SubformState::createForSubform($form['editor']['settings']['subform'], $form, $form_state); $editor_plugin->submitConfigurationForm($form['editor']['settings']['subform'], $subform_state); } diff --git a/core/modules/editor/tests/src/Functional/EditorAdminTest.php b/core/modules/editor/tests/src/Functional/EditorAdminTest.php index 3065c3fa600..431d77c6c91 100644 --- a/core/modules/editor/tests/src/Functional/EditorAdminTest.php +++ b/core/modules/editor/tests/src/Functional/EditorAdminTest.php @@ -155,6 +155,23 @@ class EditorAdminTest extends BrowserTestBase { $this->assertRaw($text); } + /** + * Tests switching text editor to none does not throw a TypeError. + */ + public function testSwitchEditorToNone() { + $this->enableUnicornEditor(); + $this->drupalLogin($this->adminUser); + $this->drupalGet('admin/config/content/formats/manage/filtered_html'); + $edit = $this->selectUnicornEditor(); + + // Switch editor to 'None'. + $edit = [ + 'editor[editor]' => '', + ]; + $this->submitForm($edit, 'Configure'); + $this->submitForm($edit, 'Save configuration'); + } + /** * Adds an editor to a new format using the UI. *