Исключить поля из FOSUserBundle с помощью сериализатора JMS, работающего на dev, но не в среде prod

#symfony #fosuserbundle #jmsserializerbundle

#symfony #fosuserbundle #jmsserializerbundle

Вопрос:

Я хотел бы исключить поля при предоставлении моего API из моего пользовательского класса, который расширяет FOSUser.

Я настроил JMS Serializer в глобальном конфигурационном файле и создал конфигурацию FOSUB, чтобы предоставлять доступ только к нужным мне полям.

Глобальная конфигурация:

 app/config/config.yml

jms_serializer:
    metadata:
        directories:
            FOSUB:
                namespace_prefix: "FOS\UserBundle"
                path: "@AppBundle/Resources/config/serializer/fos"
  

Файл конфигурации FOS:

 src/AppBundle/Resources/config/serializer/fos/Model.user.yml
FOSUserBundleModelUser:
    exclusion_policy: ALL
    properties:
        id:
            expose: true
        email:
            expose: true
        roles:
            expose: true
  

Эта конфигурация отлично работает на моем локальном компьютере, однако она не работает при развертывании на prod. Оба используют один и тот же стек, я предполагаю, что на prod каким-то образом сериализатор не может найти файл конфигурации FOS.

Любая помощь была бы высоко оценена.

Ответ №1:

Проблема была каким-то образом связана с именованием файла конфигурации.

В то время как в локальной (macos) среде имя файла Model.user.yml работало, в рабочей среде (centos) это не сработало. Итак, мне пришлось переименовать файл в Model.User.yml , тогда он отлично работал на обоих.

Я пытался найти какую-либо документацию, связанную с этой проблемой, но не смог ее найти.

Удаление: Убедитесь, что имя файла конфигурации точно соответствует сущности, которую вы хотите переопределить.