From e94c8af358d7f9d2b4209d390ca74b6f8e44b4f9 Mon Sep 17 00:00:00 2001 From: Lee Rowlands Date: Tue, 24 Nov 2020 12:01:40 +1000 Subject: [PATCH] Issue #3136406 by Spokje, codersukanta, IJsbrandy, atul4drupal, MahtabAlam, BalajiDS: Argument 1 passed to Drupal\Core\Form\SubformState::createForSubform() must be of the type array, null given (cherry picked from commit acb4b8556def8e8f87333000e1fa8e71de2a9b31) --- core/modules/editor/editor.module | 4 +++- .../tests/src/Functional/EditorAdminTest.php | 17 +++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) 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. *