From ae6d5ad8ee8f3921e49fea1f69f6d013f2b057c1 Mon Sep 17 00:00:00 2001 From: Dominic Tubach Date: Mon, 21 Jul 2025 17:08:46 +0200 Subject: [PATCH] Handle const and default values for arrays like in other fields --- src/Form/Control/ArrayArrayFactory.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/Form/Control/ArrayArrayFactory.php b/src/Form/Control/ArrayArrayFactory.php index 9ee758e..3dd4ed1 100644 --- a/src/Form/Control/ArrayArrayFactory.php +++ b/src/Form/Control/ArrayArrayFactory.php @@ -70,10 +70,19 @@ public function createFormArray( $form['#open'] = $definition->getOptionsValue('open', TRUE); } + if ((!$formState->isCached() || $definition->isReadOnly())) { + $items = $definition->getConst() ?? $formState->getTemporaryValue($definition->getPropertyPath()) + ?? $definition->getDefault(); + if (is_array($items)) { + $items = array_map(fn ($item) => $item instanceof \stdClass ? (array) $item : $item, $items); + $formState->setTemporaryValue($definition->getPropertyPath(), $items); + } + } + $propertyAccessor = FormStatePropertyAccessor::create($formState, $definition->getPropertyFormParents()); $numItems = $propertyAccessor->getProperty('numItems'); if (NULL === $numItems) { - $items = $formState->getTemporaryValue($definition->getPropertyPath()); + $items ??= $formState->getTemporaryValue($definition->getPropertyPath()); $numItems = is_array($items) ? count($items) : ($definition->getMinItems() ?? 0); $propertyAccessor->setProperty('numItems', $numItems); }