【问题标题】:Doctrine MappedSuperClass, override custom annotationDoctrine MappedSuperClass,覆盖自定义注解
【发布时间】:2015-12-13 12:51:58
【问题描述】:

我想知道是否有一种方法可以更改(或在内部定义)继承 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 定义。

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

【问题讨论】:

    标签: symfony doctrine-orm mappedsuperclass


    【解决方案1】:

    您可以告诉 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-08
      • 2017-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多