diff --git a/library/Zend/Form/Factory.php b/library/Zend/Form/Factory.php index 34b3b506898..45d9d415ec4 100644 --- a/library/Zend/Form/Factory.php +++ b/library/Zend/Form/Factory.php @@ -107,7 +107,7 @@ public function create($spec) $spec = $this->validateSpecification($spec, __METHOD__); $type = isset($spec['type']) ? $spec['type'] : 'Zend\Form\Element'; - $element = $this->getElementFromName($type); + $element = $this->getFormElementManager()->get($type); if ($element instanceof FormInterface) { return $this->configureForm($element, $spec); @@ -519,23 +519,6 @@ protected function prepareAndInjectValidationGroup($spec, FormInterface $form, $ $form->setValidationGroup($spec); } - /** - * Try to pull to element from element manager, or instantiates it from its name - * - * @param string $elementName - * @return mixed - */ - protected function getElementFromName($elementName) - { - $formElementManager = $this->getFormElementManager(); - - if ($formElementManager->has($elementName)) { - return $formElementManager->get($elementName); - } - - return new $elementName(); - } - /** * Try to pull hydrator from service manager, or instantiates it from its name * diff --git a/tests/ZendTest/Form/FactoryTest.php b/tests/ZendTest/Form/FactoryTest.php index 9ba578a8793..ffd697f80d5 100644 --- a/tests/ZendTest/Form/FactoryTest.php +++ b/tests/ZendTest/Form/FactoryTest.php @@ -594,4 +594,11 @@ public function testCanPullHydratorThroughServiceManager() $this->assertInstanceOf('Zend\Stdlib\Hydrator\ObjectProperty', $fieldset->getHydrator()); } + + public function testCreatedFieldsetsHaveFactoryAndFormElementManagerInjected() + { + $fieldset = $this->factory->createFieldset(array('name' => 'myFieldset')); + $this->assertAttributeInstanceOf('Zend\Form\Factory', 'factory', $fieldset); + $this->assertSame($fieldset->getFormFactory()->getFormElementManager(), $this->factory->getFormElementManager()); + } }