Doctrine MappedSuperClass,覆盖自定义注释

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 class)定义 "Serializer" 注释(但允许属性名为 firstName 的字段在 BaseUser 类(BaseUser class) 中定义),或者重写(User class)中的 Serialize 定义。我没有找到有关此主题的任何内容,有人已经解决了这个问题吗?谢谢。
1个回答

0

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

app/config/config.yml:

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

app/Resources/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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接