JMSSerializerBundle和单表继承

时间:2014-08-23 20:58:16

标签: symfony jmsserializerbundle

我在doctrine中使用单表继承,我想改变JMS根据实体类序列化实体的方式。

在我的单表继承中,我有一个用于映射鉴别器的类型列。

我的父实体是BundleNamespace \ Entity \ Question。 当type为single_choice时,我的实体是BundleNamespace \ Entity \ Question \ SingleChoiceQuestion。 当type为multiples_choice时,我的实体是BundleNamespace \ Entity \ Question \ MultipleChoiceQuestion。

我在config.yml中配置了jms

jms_serializer:
    metadata:
        directories:
            exam:
                namespace_prefix: "BundleNamespace"
                path: "@BundleNamespace/Resources/config/serializer"

但是,当我创建一个特定于每个子实体的yaml序列化程序文件时,它似乎不会应用每个文件的特定配置:

  • @ BundleNamespace /资源/配置/串行器/ Entity.Question.SingleChoiceQuestion.yml
  • @ BundleNamespace /资源/配置/串行器/ Entity.Question.MultipleChoiceQuestion.yml

我希望每个实体都有不同的序列化,但我似乎无法使其正常工作。

提前致谢

祝你好运

1 个答案:

答案 0 :(得分:0)

这对我有用:

  • 在单表继承中为父实体定义序列化程序配置,并配置要公开的属性。
  • 对于每个子实体,使用虚拟属性配置自定义序列化

使用此配置,所有子实体都共享父级的公共属性,但根据其配置可以具有特定属性(在本例中为虚拟)。

这不完全是我想要的但是它有效。我本来希望能够在某些子实体中隐藏父级的特定属性,但我无法做到。