Fix serialization of abstract items with groups across multiple entities
This commit is contained in:
parent
31dd002cde
commit
c648b938b2
@ -142,11 +142,16 @@ class ObjectNormalizer extends AbstractObjectNormalizer
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null !== $this->classDiscriminatorResolver && null !== $discriminatorMapping = $this->classDiscriminatorResolver->getMappingForMappedObject($classOrObject)) {
|
if (null !== $this->classDiscriminatorResolver) {
|
||||||
$allowedAttributes[] = $attributesAsString ? $discriminatorMapping->getTypeProperty() : new AttributeMetadata($discriminatorMapping->getTypeProperty());
|
$class = \is_object($classOrObject) ? \get_class($classOrObject) : $classOrObject;
|
||||||
|
if (null !== $discriminatorMapping = $this->classDiscriminatorResolver->getMappingForMappedObject($classOrObject)) {
|
||||||
|
$allowedAttributes[] = $attributesAsString ? $discriminatorMapping->getTypeProperty() : new AttributeMetadata($discriminatorMapping->getTypeProperty());
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($discriminatorMapping->getTypesMapping() as $class) {
|
if (null !== $discriminatorMapping = $this->classDiscriminatorResolver->getMappingForClass($class)) {
|
||||||
$allowedAttributes = array_merge($allowedAttributes, parent::getAllowedAttributes($class, $context, $attributesAsString));
|
foreach ($discriminatorMapping->getTypesMapping() as $mappedClass) {
|
||||||
|
$allowedAttributes = array_merge($allowedAttributes, parent::getAllowedAttributes($mappedClass, $context, $attributesAsString));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,9 +11,15 @@
|
|||||||
|
|
||||||
namespace Symfony\Component\Serializer\Tests\Fixtures;
|
namespace Symfony\Component\Serializer\Tests\Fixtures;
|
||||||
|
|
||||||
|
use Symfony\Component\Serializer\Annotation\Groups;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Samuel Roze <samuel.roze@gmail.com>
|
* @author Samuel Roze <samuel.roze@gmail.com>
|
||||||
*/
|
*/
|
||||||
class DummyMessageNumberTwo implements DummyMessageInterface
|
class DummyMessageNumberTwo implements DummyMessageInterface
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* @Groups({"two"})
|
||||||
|
*/
|
||||||
|
public $three;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user