#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
, тогда он отлично работал на обоих.
Я пытался найти какую-либо документацию, связанную с этой проблемой, но не смог ее найти.
Удаление: Убедитесь, что имя файла конфигурации точно соответствует сущности, которую вы хотите переопределить.