feature #8133 [Form] Add allow_extra_fields option on forms (felds)
This PR was merged into the 2.5-dev branch.
Discussion
----------
[Form] Add allow_extra_fields option on forms
This is specially useful when creating different *nameless* GET forms on the same page (ex: pagination and search).
Commits
-------
c6f3dd6
add allow_extra_fields option
This commit is contained in:
commit
9e3e89ae33
@ -111,7 +111,7 @@ class FormValidator extends ConstraintValidator
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Mark the form with an error if it contains extra fields
|
// 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(
|
$this->context->addViolation(
|
||||||
$config->getOption('extra_fields_message'),
|
$config->getOption('extra_fields_message'),
|
||||||
array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))),
|
array('{{ extra_fields }}' => implode('", "', array_keys($form->getExtraData()))),
|
||||||
|
@ -65,6 +65,7 @@ class FormTypeValidatorExtension extends BaseValidatorExtension
|
|||||||
'cascade_validation' => false,
|
'cascade_validation' => false,
|
||||||
'invalid_message' => 'This value is not valid.',
|
'invalid_message' => 'This value is not valid.',
|
||||||
'invalid_message_parameters' => array(),
|
'invalid_message_parameters' => array(),
|
||||||
|
'allow_extra_fields' => false,
|
||||||
'extra_fields_message' => 'This form should not contain extra fields.',
|
'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.',
|
'post_max_size_message' => 'The uploaded file was too large. Please try to upload a smaller file.',
|
||||||
));
|
));
|
||||||
|
@ -611,6 +611,28 @@ class FormValidatorTest extends \PHPUnit_Framework_TestCase
|
|||||||
$this->validator->validate($form, new Form());
|
$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
|
* @dataProvider getPostMaxSizeFixtures
|
||||||
*/
|
*/
|
||||||
|
Reference in New Issue
Block a user