diff --git a/src/Symfony/Component/Form/Extension/Core/EventListener/ResizeFormListener.php b/src/Symfony/Component/Form/Extension/Core/EventListener/ResizeFormListener.php index f1c39db245..d2b13e4a96 100644 --- a/src/Symfony/Component/Form/Extension/Core/EventListener/ResizeFormListener.php +++ b/src/Symfony/Component/Form/Extension/Core/EventListener/ResizeFormListener.php @@ -139,9 +139,21 @@ class ResizeFormListener implements EventSubscriberInterface // The data mapper only adds, but does not remove items, so do this // here if ($this->allowDelete) { - foreach ($data as $name => $child) { - if (!$form->has($name)) { - unset($data[$name]); + if ($data instanceof \IteratorAggregate) { + $iter = $data->getIterator(); + while ($iter->valid()) { + $name = $iter->key(); + if ($form->has($name)) { + $iter->next(); + } else { + $iter->offsetUnset($name); + } + } + } else { + foreach ($data as $name => $child) { + if (!$form->has($name)) { + unset($data[$name]); + } } } }