/** * {@inheritdoc} */ public function parse(Request $request) { $resource = $request->getResource(); $classMetadata = $this->classMetadataFactory->getMetadataFor($resource->getEntityClass(), $resource->getNormalizationGroups(), $resource->getDenormalizationGroups(), $resource->getValidationGroups()); $request->addHeader('Content-Type', 'application/json'); $request->setDataMode(Request::DATA_MODE_RAW); $rawModeData = []; foreach ($classMetadata->getAttributes() as $attributeMetadata) { if (!$classMetadata->getReflectionClass()->hasProperty($attributeMetadata->getName())) { // Attribute is not a property: ignore it continue; } $groups = $this->reader->getPropertyAnnotation($classMetadata->getReflectionClass()->getProperty($attributeMetadata->getName()), 'Symfony\\Component\\Serializer\\Annotation\\Groups'); if ($attributeMetadata->isIdentifier() || !$attributeMetadata->isReadable() || !count(array_intersect($groups ? $groups->getGroups() : [], $resource->getDenormalizationGroups() ?: []))) { continue; } $rawModeData[$attributeMetadata->getName()] = $this->guesser->guess($attributeMetadata); } $request->setRawModeData($rawModeData); }