symfony detime normalizer Как десериализовывать дэйттайм и связанные сущности (объект по id)

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      # Automatically injects dependencies in your services.
        autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        bind:
            Symfony\Component\Serializer\SerializerInterface $apiSerializer: '@api.serializer'

   #..........

    Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer: ~
    Symfony\Component\Serializer\Encoder\JsonEncoder: ~

    app.entity_serializer:
        class: App\Normalizer\EntityNormalizer
        public: false
        autowire: true
        autoconfigure: true
        tags:
            - { name: serializer.normalizer }

    api.date_normalizer:
        class: Symfony\Component\Serializer\Normalizer\DateTimeNormalizer
        arguments:
            - { 'datetime_format': 'd/m/Y' }

    api.serializer:
        class: Symfony\Component\Serializer\Serializer
        arguments:
            - ['@api.date_normalizer', '@app.entity_serializer',  '@Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer']
            - ['@Symfony\Component\Serializer\Encoder\JsonEncoder']

где:

-- в примере выше мы сконфигурировали собственный сериализатор под именем $apiSerializer, чтобы получить его в контроллере, надо просто сделать инъекцию зависимостей с переменной этого же имени, например:

public function __construct(MyTargetClientService $MtApiClient,
	CampaignRepository $campaignRepository, ValidatorInterface $validator,
	PaginatorInterface $paginator, SerializerInterface $apiSerializer) {
    // ..........
        $this->serializer          = $apiSerializer;
    }
vedro-compota's picture

также конвертирования (получения из id) объектов можно добиться с помощью конфигурирования сериаллайзера в коде, например в конструкторе вашего сервиса или контроллера:

$serializer = new Serializer([
        new DateTimeNormalizer(),
        new ObjectNormalizer(
            new ClassMetadataFactory(
                new AnnotationLoader(
                    new AnnotationReader()
                )
            ),
            new CamelCaseToSnakeCaseNameConverter(),
            null, 
            new ReflectionExtractor()
        ),
        new ArrayDenormalizer(),
    ]);

_____________
матфак вгу и остальная классика =)