覆盖第三方元数据 - JMSSerializerBundle和FOSUserbundle

时间:2016-07-01 21:56:24

标签: php symfony

我遇到了JMSSerializerBundle和我的FOSUserbundle覆盖实体的问题。

我使用JMSSerializerBundle来序列化我的实体,使用FosRestBundle来制作API。我自己的实体没有问题,但当我试图从FosUserBundle序列化我的用户实体时,它不能按照我想要的方式工作。

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

当我将此配置设置为配置文件时,将忽略YML文件。

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

我也试过这个synthaxe:

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返回User对象时。它返回所有实体属性。

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

感谢您的帮助。

我为自己的英语道歉,我努力做得更好:)

1 个答案:

答案 0 :(得分:0)

在Symfony上进行了测试4.尝试在Entity.User.yml中创建具有以下内容的/config/serializer/Entity.User.yml

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