4

我想知道是否有一种方法可以更改(或在内部定义)继承 MappedSuperClass 的子类中的注释,例如,假设我们有一个类 BaseUser (mappedsuperclass),一个子类 User :

<?php
...
use Doctrine\ORM\Mapping as ORM;
use JMS\Serializer\Annotation as Serializer;
...


/**
* @ORM\MappedSuperclass 
*/
class BaseUser
{
    /**
     * @ORM\Column(name="firstname", type="string", length=100)
     * @Serializer\SerializedName("First_Name")
     * @Serializer\Expose
     * @Serializer\Type("string")
     * @Serializer\Groups({"Basic"})
     */
    protected $firstName;
}

/**
* @ORM\Entity
*/
class User extends BaseUser
{
    /**
     * @ORM\Column(name="sign", type="string", length=50)
     */
    private $sign;
}

我想做的是直接从 User 类定义“Serializer”注释(但让属性 firstName 在 BaseUser 类中定义),或者覆盖 User 类中的 Serialize 定义。

我没有找到有关此主题的任何信息,有人已经弄清楚了吗?谢谢

4

1 回答 1

0

您可以告诉 JMS 序列化器在您的配置中公开或不公开什么。

应用程序/配置/config.yml:

jms_serializer:
metadata:
    directories:
        - { path: %kernel.root_dir%/Resources/FOSUserBundle/serializer, namespace_prefix: 'FOS\UserBundle' }

应用程序/资源/FOSUserBundle/serializer/Model.User.yml:

FOS\UserBundle\Model\User:
exclusion_policy: ALL
properties:
    id:
        expose: true
    email:
        expose: true
    username:
        expose: true
    enabled:
        expose: true
    locked:
        expose: true

来源:https ://github.com/schmittjoh/JMSSerializerBundle/issues/78#issuecomment-31831236

于 2016-04-05T10:46:45.087 回答