使用 JMS Serializer 在 dev 但不在 prod 环境中从 FOSUserBundle 中排除字段

Exclude fields from FOSUserBundle using JMS Serializer working on dev but not on prod environment

我想在向扩展 FOSUser 的用户 class 公开我的 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 配置文件。

如有任何帮助,我们将不胜感激。

这个问题在某种程度上与配置文件的命名有关。

虽然在本地 (macos) 文件名 Model.user.yml 有效,但在生产 (centos) 中无效。所以我不得不将文件重命名为 Model.User.yml 然后它在两者上都工作正常。

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

带走:确保配置文件名完全代表您要覆盖的实体。