. */ namespace App\Serializer; use App\Entity\Base\AbstractStructuralDBElement; use Symfony\Component\Serializer\Normalizer\ContextAwareDenormalizerInterface; use Symfony\Component\Serializer\Normalizer\ContextAwareNormalizerInterface; use Symfony\Component\Serializer\Normalizer\NormalizerInterface; use Symfony\Component\Serializer\Normalizer\ObjectNormalizer; class StructuralElementNormalizer implements ContextAwareNormalizerInterface { private NormalizerInterface $normalizer; public function __construct(ObjectNormalizer $normalizer) { $this->normalizer = $normalizer; } public function supportsNormalization($data, string $format = null, array $context = []) { return $data instanceof AbstractStructuralDBElement; } public function normalize($object, string $format = null, array $context = []) { if (!$object instanceof AbstractStructuralDBElement) { throw new \InvalidArgumentException('This normalizer only supports AbstractStructural objects!'); } $data = $this->normalizer->normalize($object, $format, $context); //Remove type field for CSV export if ($format === 'csv') { unset($data['type']); } $data['full_name'] = $object->getFullPath('->'); return $data; } }