src/Serializer/LogoNormalizer.php line 24

  1. <?php
  2. namespace App\Serializer;
  3. use App\Entity\Empresa;
  4. use Vich\UploaderBundle\Storage\StorageInterface;
  5. use Symfony\Component\Serializer\Normalizer\NormalizerInterface;
  6. use Symfony\Component\Serializer\Normalizer\NormalizerAwareTrait;
  7. use Symfony\Component\Serializer\Normalizer\NormalizerAwareInterface;
  8. final class LogoNormalizer implements NormalizerInterfaceNormalizerAwareInterface
  9. {
  10.     use NormalizerAwareTrait;
  11.     /**
  12.      * @var string
  13.      */
  14.     private const ALREADY_CALLED 'LOGO_NORMALIZER_ALREADY_CALLED';
  15.     public function __construct(private StorageInterface $storage)
  16.     {
  17.     }
  18.     public function normalize($object, ?string $format null, array $context = []): array|string|int|float|bool|\ArrayObject|null
  19.     {
  20.         $context[self::ALREADY_CALLED] = true;
  21.         $object->setContentUrl($this->storage->resolveUri($object'logo'));
  22.         return $this->normalizer->normalize($object$format$context);
  23.     }
  24.     public function supportsNormalization($data, ?string $format null, array $context = []): bool
  25.     {
  26.         if (isset($context[self::ALREADY_CALLED])) {
  27.             return false;
  28.         }
  29.         return $data instanceof Empresa;
  30.     }
  31. }