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

Commit 97f005a

Browse files
committed
Merge pull request #216 from rkeet/master
Updated Form class, bindValues function to set to empty array if no …
2 parents c5dcf6f + a3edaaf commit 97f005a

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

src/Form.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -361,7 +361,9 @@ public function bindValues(array $values = [], array $validationGroup = null)
361361

362362
// If there is a base fieldset, only hydrate beginning from the base fieldset
363363
if ($this->baseFieldset !== null) {
364-
$data = $data[$this->baseFieldset->getName()];
364+
$data = array_key_exists($this->baseFieldset->getName(), $data)
365+
? $data[$this->baseFieldset->getName()]
366+
: [];
365367
$this->object = $this->baseFieldset->bindValues($data, $validationGroup[$this->baseFieldset->getName()]);
366368
} else {
367369
$this->object = parent::bindValues($data, $validationGroup);

test/FormTest.php

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
use Zend\Form\Factory;
1616
use Zend\Form\Fieldset;
1717
use Zend\Form\Form;
18+
use Zend\Hydrator;
1819
use Zend\Hydrator\ObjectProperty as ObjectPropertyHydrator;
1920
use Zend\InputFilter\BaseInputFilter;
20-
use Zend\InputFilter\InputFilter;
2121
use Zend\InputFilter\Factory as InputFilterFactory;
22-
use Zend\Hydrator;
22+
use Zend\InputFilter\InputFilter;
2323
use ZendTest\Form\TestAsset\Entity;
2424
use ZendTest\Form\TestAsset\HydratorAwareModel;
2525

@@ -818,6 +818,28 @@ public function testBindValuesWithWrappingPopulatesBoundObject()
818818
], $model->foobar);
819819
}
820820

821+
public function testFormBaseFieldsetBindValuesWithoutInputs()
822+
{
823+
$baseFieldset = new Fieldset('base_fieldset');
824+
$baseFieldset->setUseAsBaseFieldset(true);
825+
826+
$form = new Form();
827+
$form->add($baseFieldset);
828+
$form->setHydrator(new ObjectPropertyHydrator());
829+
830+
$model = new stdClass();
831+
$form->bind($model);
832+
833+
$data = [
834+
'submit' => 'save',
835+
];
836+
$form->setData($data);
837+
838+
$form->isValid(); // Calls ->bindValues after validation (line: 817)
839+
840+
$this->assertObjectNotHasAttribute('submit', $model);
841+
}
842+
821843
public function testHasFactoryComposedByDefault()
822844
{
823845
$factory = $this->form->getFormFactory();

0 commit comments

Comments
 (0)