使用 JMSSerializerBundle 和 FOSUserBundle 公开实体

Exposing an entity using JMSSerializerBundle and FOSUserBundle

[使用 Symfony2、JMSSerializerBundle、FOSUserBundle、Doctrine ORM]

User 实体与 PersonalDetails 实体相关联。 使用 JMSSerializer 我无法在序列化 User.

时暴露 PersonalDetails

User实体

/* AppBundle\Entity\User.php

    /** @ORM\OneToOne(targetEntity="PersonalDetails", mappedBy="user", cascade={"persist","remove"}) */
    protected $personalDetails;

序列化器配置

# app/serializer/FOSUserBundle/Model.User.yml

FOS\UserBundle\Model\User:
    exclusion_policy: ALL
    properties:
        username:
            expose: true
        email:
            expose: true
        roles:
            expose: true
        personalDetails:
            expose: true

UsernameEmailRoles 都暴露得很好。 PersonalDetails 有它自己的 @Expose 注释,当仅序列化 PersonalDetails 结果时,它们都可以正常工作。我错过了什么?

如何使用此配置正确公开 PersonalDetails 实体?

哎呀!感觉像个白痴。我告诉 FOSUserBundleUser 实体公开 PersonalDetails,但我应该告诉 AppBundle\Entity\User 公开。

固定码:

    use JMS\Serializer\Annotation\Expose 

    /** 
      *@Expose()
      *@ORM\OneToOne(targetEntity="PersonalDetails", mappedBy="user", cascade=   {"persist","remove"}) */
    protected $personalDetails;