【问题标题】:Overriding Third-Party Metadata - JMSSerializerBundle and FOSUserbundle覆盖第三方元数据 - JMSSerializerBundle 和 FOSUserbundle
【发布时间】:2016-07-01 21:56:24
【问题描述】:

我对 JMSSerializerBundle 和我的 FOSUserbundle 覆盖实体有疑问。

我使用 JMSSerializerBundle 来序列化我的实体,并使用 FosRestBundle 来制作 API。我自己的实体没有问题,但是当我尝试序列化从 FosUserBundle 覆盖的用户实体时,它无法按我想要的方式工作。

我只想公开 FOSUserbundle 给出的用户实体的用户名,并显示我自己的实体的一些属性(被覆盖)。

当我将此配置设置到配置文件中时,YML 文件将被忽略。

jms_serializer:
    metadata:
        auto_detection: true
        directories:
            - { path: @bwbUserBundle/Resources/config/serializer, namespace_prefix: 'FOS\UserBundle' }

我也试过这个合成器:

jms_serializer:
    metadata:
        auto_detection: true
        directories:
            FOSUserBundle:
                namespace_prefix: FOS\UserBundle
                path: "@bwbUserBundle/Resources/config/serializer"

我的Model.User.yml 包含在@bwbUserBundle/Resources/config/serializer 目录中

FOS\UserBundle\Model\User:
    exclusion_policy: ALL
    # add your desired configuration below.

当我使用 FosRestBundle 返回用户对象时。它返回所有实体属性。

{
  "id": 1,
  "username": "******",
  "username_canonical": "******",
  "email": "******@******",
  "email_canonical": "******@******",
  "enabled": true,
  "salt": "******",
  "password": "******",
  "last_login": "******",
  "locked": false,
  "expired": false,
  "roles": [
    "******",
    "******",
    "******",
    "******",
    "******",
    "******",
    "******"
  ],
  "credentials_expired": false
}

感谢您的帮助。

我为我的英语道歉,我努力变得更好:)

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    在 Symfony 4 上测试。尝试在 /config/serializer/Entity.User.yml 中创建一个 Entity.User.yml,内容如下:

    App\Entity\User:
        exclusion_policy: ALL
        properties:
            id:
                expose: true
            username:
                expose: true
    

    【讨论】:

      猜你喜欢
      • 2017-05-10
      • 2021-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2016-12-06
      • 1970-01-01
      相关资源
      最近更新 更多