add allow_extra_fields option
This commit is contained in:
parent
430c6d7485
commit
c6f3dd6a85
@ -107,7 +107,7 @@ class FormValidator extends ConstraintValidator
|
||||
}
|
||||
|
||||
// Mark the form with an error if it contains extra fields
|
||||
if (count($form->getExtraData()) > 0) {
|
||||
if (!$config->getOption('allow_extra_fields') && count($form->getExtraData()) > 0) {
|
||||
$this->context->addViolation(
|
||||
$config->getOption('extra_fields_message'),
|
||||
array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))),
|
||||
|
@ -67,6 +67,7 @@ class FormTypeValidatorExtension extends BaseValidatorExtension
|
||||
'cascade_validation' => false,
|
||||
'invalid_message' => 'This value is not valid.',
|
||||
'invalid_message_parameters' => array(),
|
||||
'allow_extra_fields' => false,
|
||||
'extra_fields_message' => 'This form should not contain extra fields.',
|
||||
'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.',
|
||||
));
|
||||
|
@ -615,6 +615,28 @@ class FormValidatorTest extends \PHPUnit_Framework_TestCase
|
||||
$this->validator->validate($form, new Form());
|
||||
}
|
||||
|
||||
public function testNoViolationIfAllowExtraData()
|
||||
{
|
||||
$context = $this->getMockExecutionContext();
|
||||
|
||||
$form = $this
|
||||
->getBuilder('parent', null, array('allow_extra_fields' => true))
|
||||
->setCompound(true)
|
||||
->setDataMapper($this->getDataMapper())
|
||||
->add($this->getBuilder('child'))
|
||||
->getForm();
|
||||
|
||||
$form->bind(array('foo' => 'bar'));
|
||||
|
||||
$context->expects($this->never())
|
||||
->method('addViolation');
|
||||
$context->expects($this->never())
|
||||
->method('addViolationAt');
|
||||
|
||||
$this->validator->initialize($context);
|
||||
$this->validator->validate($form, new Form());
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider getPostMaxSizeFixtures
|
||||
*/
|
||||
|
Reference in New Issue
Block a user