diff --git a/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php b/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php index 65e54f6feb..c0c2085b9b 100644 --- a/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php +++ b/src/Symfony/Component/Form/Extension/Validator/Constraints/FormValidator.php @@ -181,7 +181,7 @@ class FormValidator extends ConstraintValidator $groups = $form->getConfig()->getOption('validation_groups'); if (null !== $groups) { - if (is_callable($groups)) { + if (!is_string($groups) && is_callable($groups)) { $groups = call_user_func($groups, $form); } diff --git a/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php b/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php index b79fd5d41b..b6e3f82c4d 100644 --- a/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php +++ b/src/Symfony/Component/Form/Tests/Extension/Validator/Constraints/FormValidatorTest.php @@ -302,6 +302,24 @@ class FormValidatorTest extends \PHPUnit_Framework_TestCase $this->validator->validate($form, new Form()); } + public function testDontExecuteFunctionNames() + { + $context = $this->getExecutionContext(); + $graphWalker = $context->getGraphWalker(); + $object = $this->getMock('\stdClass'); + $options = array('validation_groups' => 'header'); + $form = $this->getBuilder('name', '\stdClass', $options) + ->setData($object) + ->getForm(); + + $graphWalker->expects($this->once()) + ->method('walkReference') + ->with($object, 'header', 'data', true); + + $this->validator->initialize($context); + $this->validator->validate($form, new Form()); + } + public function testHandleClosureValidationGroups() { $context = $this->getExecutionContext();