[Form] Fixed arrays not to be passed to the validator
This commit is contained in:
parent
1c3e3f7744
commit
7c9c7af863
@ -736,6 +736,8 @@ class Form extends Field implements \IteratorAggregate, FormInterface
|
||||
throw new MissingOptionsException('The option "validator" is required for validating', array('validator'));
|
||||
}
|
||||
|
||||
// Only validate data if it is a domain object
|
||||
if (is_object($this->getData())) {
|
||||
// Validate the submitted data in the domain object in the sets
|
||||
// validation group(s)
|
||||
if ($violations = $validator->validate($this->getData(), $groups)) {
|
||||
@ -748,6 +750,7 @@ class Form extends Field implements \IteratorAggregate, FormInterface
|
||||
$this->addError($error, $iterator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Validate the submitted data in the fields in group "Default"
|
||||
if ($violations = $validator->validate($this)) {
|
||||
|
@ -200,13 +200,13 @@ class FormTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
public function testBindUsesValidationGroups()
|
||||
{
|
||||
$field = $this->createMockField('firstName');
|
||||
$form = new Form('author', array(
|
||||
'validation_groups' => 'group',
|
||||
'validator' => $this->validator,
|
||||
));
|
||||
$form->add($field);
|
||||
$form->add(new TestField('firstName'));
|
||||
|
||||
// both the form and the object are validated
|
||||
$this->validator->expects($this->exactly(2))
|
||||
->method('validate');
|
||||
|
||||
@ -221,8 +221,26 @@ class FormTest extends \PHPUnit_Framework_TestCase
|
||||
// ->method('validate')
|
||||
// ->with($this->equalTo($form));
|
||||
|
||||
// data is irrelevant
|
||||
$form->bind($this->createPostRequest());
|
||||
// concrete request is irrelevant
|
||||
// data is an object
|
||||
$form->bind($this->createPostRequest(), new Author());
|
||||
}
|
||||
|
||||
public function testBindDoesNotValidateArrays()
|
||||
{
|
||||
$form = new Form('author', array(
|
||||
'validator' => $this->validator,
|
||||
));
|
||||
$form->add(new TestField('firstName'));
|
||||
|
||||
// only the form is validated
|
||||
$this->validator->expects($this->once())
|
||||
->method('validate')
|
||||
->with($this->equalTo($form));
|
||||
|
||||
// concrete request is irrelevant
|
||||
// data is an array
|
||||
$form->bind($this->createPostRequest(), array());
|
||||
}
|
||||
|
||||
public function testBindThrowsExceptionIfNoValidatorIsSet()
|
||||
|
Reference in New Issue
Block a user