Symfony2 JMS序列化程序添加自定义属性

时间:2015-10-05 16:10:17

标签: symfony serialization

正如标题所述,我正在尝试将自定义属性添加到我返回的序列化对象中。

让我们使用以下方法获取用户:

  • getFirstname,setFirstname
  • getLastname,setLastname
  • getUsername,setUsername
  • ...

现在在序列化中我想添加一个属性fullName:Firstname + Lastname。

我的实体中有一个getter方法,如下所示:

/**
 * get name
 *
 * @return string
 */
public function getName()
{
    return $this->getFirstname()." ".$this->getLastname();
}   

我的序列化文件如下所示:

AppBundle\Entity\User:
    exclusion_policy: ALL
    properties:
        id:
            expose: false
        username:
            expose: true
            groups: [list, details]
        email:
            expose: true
            groups: [details]
        name:
            expose: true
            groups: [list, details]

我试过

    name:
        expose: true
        groups: [list, details]
        access_type: public_method
        type: string
        serialized_name: fullName
        accessor:
            getter: getName

和其他变种,但我似乎无法做对。

Note: Yes I've cleared my cache and tried it again.

任何人都能告诉我我错过了什么?

提前致谢!

1 个答案:

答案 0 :(得分:1)

由于您的全名根本不是属性,因此您必须定义虚拟属性:

AppBundle\Entity\User:
    exclusion_policy: ALL
    properties:
        # All properties but not name
    virtual_properties:
        getName:
            groups: [list, details]
            serialized_name: fullName