From 49742281e5e8a1c88039b9c08170fa32d3891ae6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 12:00:19 +0100 Subject: [PATCH 1/7] Inject input filter factory --- src/Form.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Form.php b/src/Form.php index 0b34a844..4427c81f 100644 --- a/src/Form.php +++ b/src/Form.php @@ -687,6 +687,7 @@ public function getInputFilter() if (!isset($this->filter)) { $this->filter = new InputFilter(); + $this->filter->setFactory($this->getFormFactory()->getInputFilterFactory()); } if (!$this->hasAddedInputFilterDefaults From 4ec4b8da90c6da4ce0bcdc72c2ebb666c9551708 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 13:00:00 +0100 Subject: [PATCH 2/7] Add test --- test/FormTest.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/test/FormTest.php b/test/FormTest.php index 142166ef..4997be09 100644 --- a/test/FormTest.php +++ b/test/FormTest.php @@ -2135,4 +2135,14 @@ public function testSetValidationGroupOnFormWithNestedCollectionsPopulatesOnlyFi $this->assertEquals($data, $this->form->getData()); } + + /** + * Test for https://github.com/zendframework/zend-form/pull/24#issue-119023527 + */ + public function testGetInputFilterInjectsFormInputFilterFactoryInstance() + { + $inputFilterFactory = $this->form->getFormFactory()->getInputFilterFactory(); + $inputFilter = $this->form->getInputFilter(); + $this->assertSame($inputFilterFactory, $inputFilter->getFactory()); + } } From 41753a67afc494289c6af1a1f1abac76fcd009ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 13:06:30 +0100 Subject: [PATCH 3/7] Remove whitespacy line --- test/FormTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/FormTest.php b/test/FormTest.php index 4997be09..5628165c 100644 --- a/test/FormTest.php +++ b/test/FormTest.php @@ -2135,7 +2135,7 @@ public function testSetValidationGroupOnFormWithNestedCollectionsPopulatesOnlyFi $this->assertEquals($data, $this->form->getData()); } - + /** * Test for https://github.com/zendframework/zend-form/pull/24#issue-119023527 */ From 05a212bb0b2531116dc3065f7049e29d0e78e257 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 14:02:56 +0100 Subject: [PATCH 4/7] Inject input filter factory --- src/Form.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Form.php b/src/Form.php index 4427c81f..7cd274cc 100644 --- a/src/Form.php +++ b/src/Form.php @@ -679,6 +679,7 @@ public function getInputFilter() $name = $this->baseFieldset->getName(); if (!$this->filter instanceof InputFilterInterface || !$this->filter->has($name)) { $filter = new InputFilter(); + $filter->setFactory($this->getFormFactory()->getInputFilterFactory()); $filter->add($this->object->getInputFilter(), $name); $this->filter = $filter; } From 05dd1457da944ee308faeddaa9f0e7613e8df22e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 14:49:30 +0100 Subject: [PATCH 5/7] Add input filter aware cat test asset --- test/TestAsset/Entity/Cat.php | 70 +++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 test/TestAsset/Entity/Cat.php diff --git a/test/TestAsset/Entity/Cat.php b/test/TestAsset/Entity/Cat.php new file mode 100644 index 00000000..e572b97d --- /dev/null +++ b/test/TestAsset/Entity/Cat.php @@ -0,0 +1,70 @@ +name = $name; + return $this; + } + + /** + * @return string + */ + public function getName() + { + return $this->name; + } + + /** + * Set input filter + * + * @param InputFilterInterface $inputFilter + * @return Cat + */ + public function setInputFilter(InputFilterInterface $inputFilter) + { + $this->inputFilter = $inputFilter; + return $this; + } + + /** + * Retrieve input filter + * + * @return InputFilterInterface + */ + public function getInputFilter() + { + if (null === $this->inputFilter) { + $this->inputFilter = new InputFilter(); + } + return $this->inputFilter; + } +} From dce798740628d1181c094e44d173d4cd78ec780d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 14:59:21 +0100 Subject: [PATCH 6/7] Add second test --- test/FormTest.php | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/test/FormTest.php b/test/FormTest.php index 5628165c..1e2f1518 100644 --- a/test/FormTest.php +++ b/test/FormTest.php @@ -2139,10 +2139,22 @@ public function testSetValidationGroupOnFormWithNestedCollectionsPopulatesOnlyFi /** * Test for https://github.com/zendframework/zend-form/pull/24#issue-119023527 */ - public function testGetInputFilterInjectsFormInputFilterFactoryInstance() + public function testGetInputFilterInjectsFormInputFilterFactoryInstanceObjectIsNull() { $inputFilterFactory = $this->form->getFormFactory()->getInputFilterFactory(); $inputFilter = $this->form->getInputFilter(); $this->assertSame($inputFilterFactory, $inputFilter->getFactory()); } + + /** + * Test for https://github.com/zendframework/zend-form/pull/24#issuecomment-159905491 + */ + public function testGetInputFilterInjectsFormInputFilterFactoryInstanceWhenObjectIsInputFilterAware() + { + $this->form->setBaseFieldset(new Fieldset()); + $this->form->bind(new TestAsset\Entity\Cat()); + $inputFilterFactory = $this->form->getFormFactory()->getInputFilterFactory(); + $inputFilter = $this->form->getInputFilter(); + $this->assertSame($inputFilterFactory, $inputFilter->getFactory()); + } } From 33726fffba0c5c6dae67f0674cd06cbc8f62c3e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A4nz=20Friederes?= Date: Thu, 26 Nov 2015 15:11:49 +0100 Subject: [PATCH 7/7] Add ClassMethods hydrator to form --- test/FormTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/test/FormTest.php b/test/FormTest.php index 1e2f1518..a4ab0812 100644 --- a/test/FormTest.php +++ b/test/FormTest.php @@ -2152,6 +2152,7 @@ public function testGetInputFilterInjectsFormInputFilterFactoryInstanceObjectIsN public function testGetInputFilterInjectsFormInputFilterFactoryInstanceWhenObjectIsInputFilterAware() { $this->form->setBaseFieldset(new Fieldset()); + $this->form->setHydrator(new Hydrator\ClassMethods()); $this->form->bind(new TestAsset\Entity\Cat()); $inputFilterFactory = $this->form->getFormFactory()->getInputFilterFactory(); $inputFilter = $this->form->getInputFilter();