From 40c8afef9cd0c7d225437348e19a74e9b4572845 Mon Sep 17 00:00:00 2001
From: Luiz Petri <24775-luizsgpetri@users.noreply.drupalcode.org>
Date: Sat, 13 May 2023 19:38:47 +0300
Subject: [PATCH] Issue #3097411 by tetranz, MorinLuc0, luizsgpetri: Entity
 form simple weight duplicates

---
 .../Field/FieldWidget/InlineEntityFormSimple.php      | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php b/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
index cd2ebd12..0a60007c 100644
--- a/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
+++ b/src/Plugin/Field/FieldWidget/InlineEntityFormSimple.php
@@ -148,13 +148,18 @@ class InlineEntityFormSimple extends InlineEntityFormBase {
         /** @var \Drupal\Core\Entity\EntityInterface $entity */
         $entity = $element['inline_entity_form']['#entity'];
         $weight = $submitted_values[$delta]['_weight'] ?? 0;
-        $values[$weight] = ['entity' => $entity];
+        $values[] = ['entity' => $entity, 'weight' => $weight];
       }
     }
 
     // Sort items base on weights.
-    ksort($values);
-    $values = array_values($values);
+    usort($values, function ($a, $b) {
+      return $a['weight'] <=> $b['weight'];
+    });
+
+    $values = array_map(function ($item) {
+      return $item['entity'];
+    }, $values);
 
     // Let the widget massage the submitted values.
     $values = $this->massageFormValues($values, $form, $form_state);
-- 
GitLab