diff --git a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php index fb9e1fdad63de5cff45cac6a48330bb8d8266876..b0877684e1939f50d73de743f2905b2e54bb32e9 100644 --- a/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php +++ b/src/Plugin/Field/FieldWidget/InlineEntityFormComplex.php @@ -814,6 +814,23 @@ class InlineEntityFormComplex extends InlineEntityFormBase implements ContainerF } $triggering_element = $form_state->getTriggeringElement(); if (empty($triggering_element['#ief_submit_trigger'])) { + $field_name = $this->fieldDefinition->getName(); + $parents = array_merge($form['#parents'], [$field_name, 'form']); + // Build IEF ID form inline field + $ief_id = $this->makeIefId($parents); + $this->setIefId($ief_id); + // Get values entities by IEF ID in inline_entity_form + $widget_state = &$form_state->get(['inline_entity_form', $ief_id]); + // Sort items items base on weights. + if(isset($widget_state['entities']) && !empty($widget_state['entities'])){ + $values = $widget_state['entities']; + uasort($values, '\Drupal\Component\Utility\SortArray::sortByWeightElement'); + // Let the widget massage the submitted values. + $values = $this->massageFormValues($values, $form, $form_state); + // Assign the values and remove the empty ones. + $items->setValue($values); + $items->filterEmptyItems(); + } return; }