使用JMS序列化器从FOSUserBundle中排除字段,该JMS序列化器适用于开发人员,但不适用于生产环境

时间:2019-03-13 16:17:19

标签: symfony fosuserbundle jmsserializerbundle

从扩展FOSUser的用户类中公开API时,我想排除字段。

我已经在全局配置文件上设置了JMS序列化器,并创建了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
FOS\UserBundle\Model\User:
    exclusion_policy: ALL
    properties:
        id:
            expose: true
        email:
            expose: true
        roles:
            expose: true

此配置在我的本地计算机上运行良好,但是在产品上部署时不起作用。两者都使用相同的堆栈,我的猜测是,在某种程度上,序列化程序找不到FOS配置文件。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

问题与配置文件的命名有关。

在本地(macos)中,文件名Model.user.yml有效,而在生产(centos)中,该文件名无效。因此,我不得不将文件重命名为Model.User.yml,然后在两个文件上都能正常工作。

我试图找到一些与此问题相关的文档,但找不到任何文档。

要点::请确保配置文件名称准确地代表您要覆盖的实体