Пользовательский нормализатор не прошел службу конвертации имен - PullRequest
1 голос
/ 30 марта 2020

Я работаю над созданием пользовательского (де) нормализатора для обработки сущностей. Я создал нормализатор и разрешил служебному контейнеру autowire / autoconfig. Сервис выбран правильно во время десериализации, но у меня проблемы с конвертером имен. Я хочу использовать сервис MetadataAwareNameConverter, поскольку я использую аннотацию @SerializedName в своей сущности. Независимо от того, что я делаю, в пользовательском нормализаторе он всегда пуст Я пробовал несколько способов получения службы конвертера имен:

  1. Установка этого явно в моем конструкторе классов
  2. Установка его в определении сервиса (эффективно избавляясь от autowire / autoconfig )
  3. Установка MetadataAwareNameConverter как значения по умолчанию в framework.yaml (я обнаружил, что это уже значение по умолчанию).
  4. Скопировал существующий нормализатор в мой sr c и переименовал его, чтобы увидеть, получил ли он правильный конвертер имен (он все еще не работал)

Встроенные нормализаторы получают конвертер имен без проблем, это просто мой собственный нормализатор, который имеет эту проблему.

Есть что-нибудь еще, что я должен попробовать? Я пропустил шаг в настройке моего сервиса? Любое направление приветствуется.

ОБНОВЛЕНИЕ - когда я сбрасываю контейнер службы, служба преобразования имен отсутствует в списке аргументов

---------------- ----------------------------------------------------------
  Option           Value
 ---------------- ----------------------------------------------------------
  Service ID       App\Normalizer\QNormalizer
  Class            App\Normalizer\QNormalizer
  Tags             serializer.normalizer
  Public           no
  Synthetic        no
  Lazy             no
  Shared           yes
  Abstract         no
  Autowired        yes
  Autoconfigured   yes
  Arguments        Service(serializer.mapping.class_metadata_factory)
                   -----THIS IS WHERE THE NAME CONVERTER SHOULD BE----
                   Service(property_accessor)
                   Service(property_info)
                   Service(serializer.mapping.class_discriminator_resolver)

1 Ответ

0 голосов
/ 08 апреля 2020

Ввод вручную MetadataAwareNameConverter в services.yaml решенная для меня проблема.

App\Serializer\CustomNormalizer:
    arguments:
        $nameConverter: '@serializer.name_converter.metadata_aware'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...