/** * Validate the loaded form with the data * * @param array $data * * @return ValidationResult */ public function validate(array $data) { $this->inputFilter->setData($data); $validationErrors = []; // Do some validation if (!$this->inputFilter->isValid()) { foreach ($this->inputFilter->getInvalidInput() as $error) { $validationErrors[$error->getName()] = $error->getMessages(); } } // Return validation result return new ValidationResult($this->inputFilter->getRawValues(), $this->inputFilter->getValues(), $validationErrors); }
public function testNestedCollectionWithEmptyData() { $items_inputfilter = new BaseInputFilter(); $items_inputfilter->add(new Input(), 'id')->add(new Input(), 'type'); $items = new CollectionInputFilter(); $items->setInputFilter($items_inputfilter); $groups_inputfilter = new BaseInputFilter(); $groups_inputfilter->add(new Input(), 'group_class')->add($items, 'items'); $groups = new CollectionInputFilter(); $groups->setInputFilter($groups_inputfilter); $inputFilter = new BaseInputFilter(); $inputFilter->add($groups, 'groups'); $data = array('groups' => array(array('group_class' => 'bar', 'items' => array(array('id' => 100, 'type' => 'item-1'))), array('group_class' => 'biz', 'items' => array()), array('group_class' => 'bar', 'items' => array(array('id' => 200, 'type' => 'item-2'), array('id' => 300, 'type' => 'item-3'), array('id' => 400, 'type' => 'item-4'))))); $inputFilter->setData($data); $inputFilter->isValid(); $values = $inputFilter->getValues(); $this->assertEquals($data, $values); }
public function testGetRequiredNotEmptyValidationMessages() { $filter = new InputFilter(); $foo = new Input(); $foo->setRequired(true); $foo->setAllowEmpty(false); $filter->add($foo, 'foo'); $data = array('foo' => null); $filter->setData($data); $this->assertFalse($filter->isValid()); $messages = $filter->getMessages(); $this->assertArrayHasKey('foo', $messages); $this->assertNotEmpty($messages['foo']); }
public function testValidateUseExplodeAndInstanceOf() { $filter = new InputFilter(); $input = new Input(); $input->setRequired(true); $input->getValidatorChain()->attach( new \Zend\Validator\Explode( array( 'validator' => new \Zend\Validator\IsInstanceOf( array( 'className' => 'Zend\InputFilter\Input' ) ) ) ) ); $filter->add($input, 'example'); $data = array( 'example' => array( $input ) ); $filter->setData($data); $this->assertTrue($filter->isValid()); }
/** * @group 5638 */ public function testPopulateSupportsArrayInputEvenIfDataMissing() { $arrayInput = $this->getMock('Zend\\InputFilter\\ArrayInput'); $arrayInput->expects($this->once())->method('setValue')->with(array()); $filter = new InputFilter(); $filter->add($arrayInput, 'arrayInput'); $filter->setData(array('foo' => 'bar')); }
public function testValidationMarksInputInvalidWhenRequiredAndAllowEmptyFlagIsFalse() { $filter = new InputFilter(); $foo = new Input(); $foo->getValidatorChain()->addValidator(new Validator\StringLength(3, 5)); $foo->setRequired(true); $foo->setAllowEmpty(false); $bar = new Input(); $bar->getValidatorChain()->addValidator(new Validator\Digits()); $bar->setRequired(true); $filter->add($foo, '') ->add($bar, 'bar'); $data = array('bar' => 124); $filter->setData($data); $this->assertFalse($filter->isValid()); }