protected function createForm($config, ServiceLocatorInterface $formElements, $name, $requestedName) { $services = $formElements->getServiceLocator(); $factory = new Factory($formElements); $factory->setInputFilterFactory($this->getInputFilterFactory($services)); if (isset($config['input_filter']) && is_string($config['input_filter'])) { $inputFilters = $services->get('InputFilterManager'); if ($inputFilters->has($config['input_filter'])) { $config['input_filter'] = $inputFilters->get($config['input_filter']); } } return $factory->createForm($config); }
public function testCanCreateFormFromConcreteClassAndSpecifyCustomValidatorByName() { $validatorManager = new \Zend\Validator\ValidatorPluginManager(); $validatorManager->setInvokableClass('baz', 'ZendTest\\Validator\\TestAsset\\ConcreteValidator'); $defaultValidatorChain = new \Zend\Validator\ValidatorChain(); $defaultValidatorChain->setPluginManager($validatorManager); $inputFilterFactory = new \Zend\InputFilter\Factory(); $inputFilterFactory->setDefaultValidatorChain($defaultValidatorChain); $factory = new FormFactory(); $factory->setInputFilterFactory($inputFilterFactory); $form = $factory->createForm(array('name' => 'foo', 'factory' => $factory, 'input_filter' => array('bar' => array('name' => 'bar', 'required' => true, 'validators' => array(array('name' => 'baz')))))); $this->assertInstanceOf('Zend\\Form\\FormInterface', $form); $inputFilter = $form->getInputFilter(); $this->assertInstanceOf('Zend\\InputFilter\\InputFilterInterface', $inputFilter); $input = $inputFilter->get('bar'); $this->assertInstanceOf('Zend\\InputFilter\\Input', $input); $validatorChain = $input->getValidatorChain(); $this->assertInstanceOf('Zend\\Validator\\ValidatorChain', $validatorChain); $validatorArray = $validatorChain->getValidators(); $found = false; foreach ($validatorArray as $validator) { $validatorInstance = $validator['instance']; $this->assertInstanceOf('Zend\\Validator\\ValidatorInterface', $validatorInstance); if ($validatorInstance instanceof \ZendTest\Validator\TestAsset\ConcreteValidator) { $found = true; break; } } $this->assertTrue($found); }
/** * @param \Zend\InputFilter\Factory $inputFilterFactory * @return \Zork\Form\Factory */ public function setInputFilterFactory(InputFilterFactory $inputFilterFactory) { $this->inputFilterFactoryDefaultsInitialized = false; return parent::setInputFilterFactory($inputFilterFactory); }