[Validator] Property paths starting with 0 are broken.

This commit is contained in:
fago 2015-04-18 11:56:47 +02:00 committed by Fabien Potencier
parent 1ea4612d7e
commit b3db07f5f2
3 changed files with 6 additions and 5 deletions

View File

@ -30,6 +30,7 @@ class PropertyPathTest extends \PHPUnit_Framework_TestCase
array('', 'bar', 'bar', 'It returns the subPath if basePath is empty'),
array('foo', 'bar', 'foo.bar', 'It append the subPath to the basePath'),
array('foo', '[bar]', 'foo[bar]', 'It does not include the dot separator if subPath uses the array notation'),
array('0', 'bar', '0.bar', 'Leading zeros are kept.'),
);
}
}

View File

@ -17,6 +17,7 @@ namespace Symfony\Component\Validator\Util;
* For more extensive functionality, use Symfony's PropertyAccess component.
*
* @since 2.5
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class PropertyPath
@ -42,7 +43,7 @@ class PropertyPath
return $basePath.$subPath;
}
return $basePath ? $basePath.'.'.$subPath : $subPath;
return '' !== (string) $basePath ? $basePath.'.'.$subPath : $subPath;
}
return $basePath;

View File

@ -34,6 +34,7 @@ use Symfony\Component\Validator\Util\PropertyPath;
* Recursive implementation of {@link ContextualValidatorInterface}.
*
* @since 2.5
*
* @author Bernhard Schussek <bschussek@gmail.com>
*/
class RecursiveContextualValidator implements ContextualValidatorInterface
@ -526,7 +527,7 @@ class RecursiveContextualValidator implements ContextualValidatorInterface
} elseif ($metadata->isGroupSequenceProvider()) {
// The group sequence is dynamically obtained from the validated
// object
/** @var \Symfony\Component\Validator\GroupSequenceProviderInterface $object */
/* @var \Symfony\Component\Validator\GroupSequenceProviderInterface $object */
$group = $object->getGroupSequence();
$defaultOverridden = true;
@ -590,9 +591,7 @@ class RecursiveContextualValidator implements ContextualValidatorInterface
$object,
$cacheKey.':'.$propertyName,
$propertyMetadata,
$propertyPath
? $propertyPath.'.'.$propertyName
: $propertyName,
PropertyPath::append($propertyPath, $propertyName),
$groups,
$cascadedGroups,
TraversalStrategy::IMPLICIT,