FOSRestBundle - 响应数据操作

时间:2016-04-03 18:03:03

标签: php symfony fosrestbundle

我正在使用FOSRestBundle。我想返回用户信息但数据信息较少......如何做到这一点?这是我目前的回复

{
    "id": 1,
    "user": {
        "id": 1,
        "username": "qqqq",
        "username_canonical": "qqqq",
        "email": "nie@mam.go",
        "email_canonical": "nie@mam.go",
        "enabled": true,
        "salt": "9ds56htrvvokkckgscs0084so8ss40g",
        "password": "ZcmowLmoNVLNfdMLakzp29G3TZKIfJWVWZ7sE3iylKin5dlYDIQfAJvDC6CFAS2PI4KcpJM0A8qPihDU6jH02A==",
        "last_login": "2016-04-03T18:45:06+0200",
        "locked": false,
        "expired": false,
        "roles": [],
        "credentials_expired": false,
        "created_at": "2016-04-03T18:45:06+0200",
        "updated_at": "2016-04-03T18:45:06+0200"
    },
    "text": "asdadadasd",
    "uv": 0,
    "dv": 0,
    "vote_count": 0,
    "public_i_p": "",
    "private_i_p": "",
    "voters": [],
    "created_at": "-0001-11-30T00:00:00+0124",
    "updated_at": "-0001-11-30T00:00:00+0124"
}

我不想显示所有用户信息,只显示用户名,已锁定,已过期

我的回复

public function getEntryAction(Entry $entry)
{
    return View::create()
        ->setStatusCode(200)
        ->setData($entry);
}

2 个答案:

答案 0 :(得分:3)

我可以推荐JMSSerializerBundle。它可以无缝集成,您可以定义要序列化的属性。

Bundle documentation

Annotation reference

答案 1 :(得分:2)

完成第一个答案:

  

此捆绑包需要序列化程序才能正常工作。在大多数情况下,您需要启用序列化程序或安装序列化程序。此捆绑包尝试以下(按给定顺序)确定要使用的序列化程序:

     
      
  • 使用fos_rest.service.serializer配置的那个(如果你这样做的话)。
  •   
  • JMS序列化程序,如果JMSSerializerBundle可用(并已注册)。
  •   
  • Symfony Serializer如果已启用(或任何称为序列化程序的服务)。
  •   

FOSRestBundle需要使用序列化程序,如the documentation中所述 @riska建议很好,我从未尝试过内置的串行器,但JMSSerializer可以满足您的需求。

exclusion strategies永久或动态地公开/排除属性。