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
|
||||
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()))),
|
||||
|
@ -65,6 +65,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.',
|
||||
));
|
||||
|
@ -611,6 +611,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