From 7b2ebbfa4120f079bbc8eb8d0b46821d30c05d74 Mon Sep 17 00:00:00 2001 From: Bernhard Schussek Date: Fri, 3 May 2013 12:12:06 +0200 Subject: [PATCH] [Form] Fixed: String validation groups are never interpreted as callbacks --- .../Validator/Constraints/FormValidator.php | 2 +- .../Constraints/FormValidatorTest.php | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) 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();