Skip to content
This repository was archived by the owner on Jan 30, 2020. It is now read-only.

Commit 2a9d843

Browse files
committed
Merge pull request #116 from exptom/patch-1
Add InputFilterFactory dependency to constructor
2 parents 0ec9e11 + 522c71f commit 2a9d843

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

src/Factory.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,15 @@ class Factory
3232
/**
3333
* @param FormElementManager $formElementManager
3434
*/
35-
public function __construct(FormElementManager $formElementManager = null)
35+
public function __construct(FormElementManager $formElementManager = null, InputFilterFactory $inputFilterFactory = null)
3636
{
3737
if ($formElementManager) {
3838
$this->setFormElementManager($formElementManager);
3939
}
40+
41+
if ($inputFilterFactory) {
42+
$this->setInputFilterFactory($inputFilterFactory);
43+
}
4044
}
4145

4246
/**

test/FactoryTest.php

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,60 @@ public function testCanCreateFormFromConcreteClassAndSpecifyCustomValidatorByNam
470470
$this->assertTrue($found);
471471
}
472472

473+
public function testCanCreateFormFromConcreteClassAndSpecifyCustomValidatorByNameAndSetinputFilterFactoryInConstructor()
474+
{
475+
$validatorManager = new \Zend\Validator\ValidatorPluginManager($this->services);
476+
$validatorManager->setInvokableClass('baz', 'Zend\Validator\Digits');
477+
478+
$defaultValidatorChain = new \Zend\Validator\ValidatorChain();
479+
$defaultValidatorChain->setPluginManager($validatorManager);
480+
481+
$inputFilterFactory = new \Zend\InputFilter\Factory();
482+
$inputFilterFactory->setDefaultValidatorChain($defaultValidatorChain);
483+
484+
$factory = new FormFactory(null, $inputFilterFactory);
485+
486+
$form = $factory->createForm([
487+
'name' => 'foo',
488+
'factory' => $factory,
489+
'input_filter' => [
490+
'bar' => [
491+
'name' => 'bar',
492+
'required' => true,
493+
'validators' => [
494+
[
495+
'name' => 'baz',
496+
],
497+
],
498+
],
499+
],
500+
]);
501+
502+
$this->assertInstanceOf('Zend\Form\FormInterface', $form);
503+
504+
$inputFilter = $form->getInputFilter();
505+
$this->assertInstanceOf('Zend\InputFilter\InputFilterInterface', $inputFilter);
506+
507+
$input = $inputFilter->get('bar');
508+
$this->assertInstanceOf('Zend\InputFilter\Input', $input);
509+
510+
$validatorChain = $input->getValidatorChain();
511+
$this->assertInstanceOf('Zend\Validator\ValidatorChain', $validatorChain);
512+
513+
$validatorArray = $validatorChain->getValidators();
514+
$found = false;
515+
foreach ($validatorArray as $validator) {
516+
$validatorInstance = $validator['instance'];
517+
$this->assertInstanceOf('Zend\Validator\ValidatorInterface', $validatorInstance);
518+
519+
if ($validatorInstance instanceof \Zend\Validator\Digits) {
520+
$found = true;
521+
break;
522+
}
523+
}
524+
$this->assertTrue($found);
525+
}
526+
473527
public function testCanCreateFormWithHydratorAndInputFilterAndElementsAndFieldsets()
474528
{
475529
$form = $this->factory->createForm([

0 commit comments

Comments
 (0)