From 9553be799ec0fbf1ccd06da58a02676ca64b8f5f Mon Sep 17 00:00:00 2001 From: Steve Talbot Date: Mon, 4 Aug 2014 12:57:21 +0100 Subject: [PATCH] Workaround for #6263, which is related to #4482 --- library/Zend/Form/Element/Collection.php | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/library/Zend/Form/Element/Collection.php b/library/Zend/Form/Element/Collection.php index 379fb5985f5..d72b3512067 100644 --- a/library/Zend/Form/Element/Collection.php +++ b/library/Zend/Form/Element/Collection.php @@ -509,23 +509,25 @@ public function extract() } $values = array(); - + foreach ($this->object as $key => $value) { - if ($this->hydrator) { + if (!$this->targetElement instanceof FieldsetInterface) { + $values[$key] = $value; + if (!$this->createNewObjects() && $this->has($key)) { + $this->get($key)->setValue($value); + } + } elseif ($this->hydrator) { $values[$key] = $this->hydrator->extract($value); - } elseif ($value instanceof $this->targetElement->object) { - // @see https://github.com/zendframework/zf2/pull/2848 + } elseif ($this->targetElement->allowObjectBinding($value)) { $targetElement = clone $this->targetElement; - $targetElement->object = $value; + $targetElement->setObject($value); $values[$key] = $targetElement->extract(); if (!$this->createNewObjects() && $this->has($key)) { - $fieldset = $this->get($key); - if ($fieldset instanceof Fieldset && $fieldset->allowObjectBinding($value)) { - $fieldset->setObject($value); - } + $this->get($key)->setObject($value); } } } + return $values; }