add missing double-quotes to extra_fields output message

This commit is contained in:
Daniel Kay 2018-10-12 16:56:58 +01:00 committed by Fabien Potencier
parent 1a1a02622d
commit 9e7414159c
2 changed files with 24 additions and 3 deletions

View File

@ -162,13 +162,13 @@ class FormValidator extends ConstraintValidator
if ($this->context instanceof ExecutionContextInterface) { if ($this->context instanceof ExecutionContextInterface) {
$this->context->setConstraint($constraint); $this->context->setConstraint($constraint);
$this->context->buildViolation($config->getOption('extra_fields_message')) $this->context->buildViolation($config->getOption('extra_fields_message'))
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData()))) ->setParameter('{{ extra_fields }}', '"'.implode('", "', array_keys($form->getExtraData())).'"')
->setInvalidValue($form->getExtraData()) ->setInvalidValue($form->getExtraData())
->setCode(Form::NO_SUCH_FIELD_ERROR) ->setCode(Form::NO_SUCH_FIELD_ERROR)
->addViolation(); ->addViolation();
} else { } else {
$this->buildViolation($config->getOption('extra_fields_message')) $this->buildViolation($config->getOption('extra_fields_message'))
->setParameter('{{ extra_fields }}', implode('", "', array_keys($form->getExtraData()))) ->setParameter('{{ extra_fields }}', '"'.implode('", "', array_keys($form->getExtraData())).'"')
->setInvalidValue($form->getExtraData()) ->setInvalidValue($form->getExtraData())
->setCode(Form::NO_SUCH_FIELD_ERROR) ->setCode(Form::NO_SUCH_FIELD_ERROR)
->addViolation(); ->addViolation();

View File

@ -620,12 +620,33 @@ class FormValidatorTest extends AbstractConstraintValidatorTest
$this->validator->validate($form, new Form()); $this->validator->validate($form, new Form());
$this->buildViolation('Extra!') $this->buildViolation('Extra!')
->setParameter('{{ extra_fields }}', 'foo') ->setParameter('{{ extra_fields }}', '"foo"')
->setInvalidValue(array('foo' => 'bar')) ->setInvalidValue(array('foo' => 'bar'))
->setCode(Form::NO_SUCH_FIELD_ERROR) ->setCode(Form::NO_SUCH_FIELD_ERROR)
->assertRaised(); ->assertRaised();
} }
public function testViolationFormatIfMultipleExtraFields()
{
$form = $this->getBuilder('parent', null, array('extra_fields_message' => 'Extra!'))
->setCompound(true)
->setDataMapper($this->getDataMapper())
->add($this->getBuilder('child'))
->getForm();
$form->submit(array('foo' => 'bar', 'baz' => 'qux', 'quux' => 'quuz'));
$this->expectNoValidate();
$this->validator->validate($form, new Form());
$this->buildViolation('Extra!')
->setParameter('{{ extra_fields }}', '"foo", "baz", "quux"')
->setInvalidValue(array('foo' => 'bar', 'baz' => 'qux', 'quux' => 'quuz'))
->setCode(Form::NO_SUCH_FIELD_ERROR)
->assertRaised();
}
public function testNoViolationIfAllowExtraData() public function testNoViolationIfAllowExtraData()
{ {
$context = $this->getMockExecutionContext(); $context = $this->getMockExecutionContext();