merged branch bschussek/issue4427 (PR #4431)
Commits -------fc38e2b
[Form] Fixed mapping of violations with empty paths to the root form Discussion ---------- [Form] Fixed mapping of violations with empty paths to the root form Bug fix: yes Feature addition: no Backwards compatibility break: no Symfony2 tests pass: yes Fixes the following tickets: - Todo: - --------------------------------------------------------------------------- by travisbot at 2012-05-27T12:57:36Z This pull request [passes](http://travis-ci.org/symfony/symfony/builds/1447769) (mergedfc38e2b4
intoadf07f1e
).
This commit is contained in:
commit
c61c7400d2
@ -52,10 +52,22 @@ class ViolationMapper implements ViolationMapperInterface
|
||||
{
|
||||
$this->allowNonSynchronized = $allowNonSynchronized;
|
||||
|
||||
$violationPath = new ViolationPath($violation->getPropertyPath());
|
||||
$relativePath = $this->reconstructPath($violationPath, $form);
|
||||
$violationPath = null;
|
||||
$relativePath = null;
|
||||
$match = false;
|
||||
|
||||
// Don't create a ViolationPath instance for empty property paths
|
||||
if (strlen($violation->getPropertyPath()) > 0) {
|
||||
$violationPath = new ViolationPath($violation->getPropertyPath());
|
||||
$relativePath = $this->reconstructPath($violationPath, $form);
|
||||
}
|
||||
|
||||
// This case happens if the violation path is empty and thus
|
||||
// the violation should be mapped to the root form
|
||||
if (null === $violationPath) {
|
||||
$this->scope = $form;
|
||||
}
|
||||
|
||||
// In general, mapping happens from the root form to the leaf forms
|
||||
// First, the rules of the root form are applied to determine
|
||||
// the subsequent descendant. The rules of this descendant are then
|
||||
@ -86,7 +98,7 @@ class ViolationMapper implements ViolationMapperInterface
|
||||
// This case happens if an error happened in the data under a
|
||||
// virtual form that does not match any of the children of
|
||||
// the virtual form.
|
||||
if (!$match) {
|
||||
if (null !== $violationPath && !$match) {
|
||||
// If we could not map the error to anything more specific
|
||||
// than the root element, map it to the innermost directly
|
||||
// mapped form of the violation path
|
||||
|
@ -221,6 +221,9 @@ class ViolationMapperTest extends \PHPUnit_Framework_TestCase
|
||||
|
||||
return array(
|
||||
// mapping target, child name, its property path, grand child name, its property path, violation path
|
||||
array(self::LEVEL_0, 'address', 'address', 'street', 'street', ''),
|
||||
array(self::LEVEL_0, 'address', 'address', 'street', 'street', 'data'),
|
||||
|
||||
array(self::LEVEL_2, 'address', 'address', 'street', 'street', 'children[address].children[street].data'),
|
||||
array(self::LEVEL_2, 'address', 'address', 'street', 'street', 'children[address].children[street].data.prop'),
|
||||
array(self::LEVEL_2, 'address', 'address', 'street', 'street', 'children[address].data.street'),
|
||||
|
Reference in New Issue
Block a user