From 86c4193fa5abebee2876a36e0440118f647df80f Mon Sep 17 00:00:00 2001
From: Alex Pott <alex.a.pott@googlemail.com>
Date: Mon, 1 Aug 2022 14:55:26 +0100
Subject: [PATCH] Issue #3242538 by danflanagan8, mounir_abid, cilefen,
 DigitalFrontiersMedia, super_romeo, smustgrave: Term creation fail with php 8
 when override_selector = TRUE

---
 core/modules/taxonomy/src/TermForm.php        | 20 +++++++++------
 .../tests/src/Functional/TermTest.php         | 25 +++++++++++++++++++
 2 files changed, 37 insertions(+), 8 deletions(-)

diff --git a/core/modules/taxonomy/src/TermForm.php b/core/modules/taxonomy/src/TermForm.php
index e252d8e073e2..73f6e4d11e1d 100644
--- a/core/modules/taxonomy/src/TermForm.php
+++ b/core/modules/taxonomy/src/TermForm.php
@@ -63,15 +63,19 @@ public function form(array $form, FormStateInterface $form_state) {
           $options[$item->tid] = str_repeat('-', $item->depth) . $item->name;
         }
       }
-
-      $form['relations']['parent'] = [
-        '#type' => 'select',
-        '#title' => $this->t('Parent terms'),
-        '#options' => $options,
-        '#default_value' => $parent,
-        '#multiple' => TRUE,
-      ];
     }
+    else {
+      $options = ['<' . $this->t('root') . '>'];
+      $parent = [0];
+    }
+
+    $form['relations']['parent'] = [
+      '#type' => 'select',
+      '#title' => $this->t('Parent terms'),
+      '#options' => $options,
+      '#default_value' => $parent,
+      '#multiple' => TRUE,
+    ];
 
     $form['relations']['weight'] = [
       '#type' => 'textfield',
diff --git a/core/modules/taxonomy/tests/src/Functional/TermTest.php b/core/modules/taxonomy/tests/src/Functional/TermTest.php
index d325cb1c4185..0bf4118ee9f0 100644
--- a/core/modules/taxonomy/tests/src/Functional/TermTest.php
+++ b/core/modules/taxonomy/tests/src/Functional/TermTest.php
@@ -432,6 +432,31 @@ public function testTermInterface() {
     $this->assertSession()->pageTextNotContains('Save and go to list');
   }
 
+  /**
+   * Test UI with override_selector TRUE.
+   */
+  public function testTermSaveOverrideSelector() {
+    $this->config('taxonomy.settings')->set('override_selector', TRUE)->save();
+
+    // Create a Term.
+    $edit = [
+      'name[0][value]' => $this->randomMachineName(12),
+      'description[0][value]' => $this->randomMachineName(100),
+    ];
+    // Create the term to edit.
+    $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/add');
+    $this->submitForm($edit, 'Save');
+    $terms = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->loadByProperties([
+      'name' => $edit['name[0][value]'],
+    ]);
+    $term = reset($terms);
+    $this->assertNotNull($term, 'Term found in database.');
+
+    // The term appears on the vocab list page.
+    $this->drupalGet('admin/structure/taxonomy/manage/' . $this->vocabulary->id() . '/overview');
+    $this->assertSession()->pageTextContains($term->getName());
+  }
+
   /**
    * Save, edit and delete a term using the user interface.
    */
-- 
GitLab