From 7fa2f9789be235135f518aeb24c7b3a24948b05c Mon Sep 17 00:00:00 2001 From: philippe Date: Thu, 23 Jul 2026 09:44:53 +0200 Subject: [PATCH] Fix ListFormatter::afterUpdate edge case, when the data structure was altered (transformed) --- src/Form/Fields/Formatters/ListFormatter.php | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/Form/Fields/Formatters/ListFormatter.php b/src/Form/Fields/Formatters/ListFormatter.php index e130daa9b..8c01c3de8 100644 --- a/src/Form/Fields/Formatters/ListFormatter.php +++ b/src/Form/Fields/Formatters/ListFormatter.php @@ -88,13 +88,15 @@ public function afterUpdate(SharpFormField $field, string $attribute, mixed $val { return collect($value) ->map(function ($item) use ($field) { - foreach ($item as $key => $value) { - $itemField = $field->findItemFormFieldByKey($key); - - if ($itemField && $itemField->formatter() instanceof FormatsAfterUpdate) { - $item[$key] = $itemField->formatter() - ->setInstanceId($this->instanceId) - ->afterUpdate($itemField, $key, $value); + if (is_array($item)) { // A formatter could have modified data structure; in this case, we ignore it + foreach ($item as $key => $value) { + $itemField = $field->findItemFormFieldByKey($key); + + if ($itemField && $itemField->formatter() instanceof FormatsAfterUpdate) { + $item[$key] = $itemField->formatter() + ->setInstanceId($this->instanceId) + ->afterUpdate($itemField, $key, $value); + } } }