Динамическое изменение типа с помощью JMS Serializer и Symfony

Я хотел бы динамически решать, какой тип объекта JMS Serializer собирается сериализовать.

Например, у меня есть два свойства: одно для хранения значения скидки, а другое — для типа скидки. Если тип скидки равен 0, то значение скидки будет просто числом (что означает «это количество процентов, которое вы получаете в качестве дисконта»). Для Discount_type = 1 у вас будет объект Money в Discount_value (объект Money — это сумма и валюта).

Вывод должен быть следующим:

{
 ...
 discounts: [
    {
      value: 10,
      type: 0
    },
    {
      value: {
        money_value: 50,
        money_currency: EUR
      },
      type: 1
    }
 ]
}

Есть ли способ сделать это? Мне нужен определенный тип в Entity.Class.yml, так как позже мне нужно выполнить некоторую десериализацию.


person nbucic    schedule 19.02.2018    source источник


Ответы (1)


В этом случае вы можете попробовать использовать @Discrimantor аннотацию. Чтобы вы могли иметь некоторый абстрактный класс значения скидки и два его потомка с разными полями и отображением.

person Roman Kliuchko    schedule 03.09.2018