У меня проблема с JMS Serializer и классом наследования. Когда я сериализую свои сущности, он не заботится о аннотации JMSSerializer из-за класса наследования … Итак, как я могу установить анонс JMSSerializer с наследованием класса?
Пример :
/**
* Class Category
*
* @Serializer\ExclusionPolicy("all")
*/
class Category extends BaseCategory
{
/**
* @var integer $id
*
* @Serializer\Expose
*/
protected $id;
}
/**
* Class BaseCategory
*/
class BaseCategory
{
/**
* @var Dish
*/
protected $dishs;
/**
* @var string
*/
protected $name;
}
Когда я сериализую категорию, возвращаемый json выглядит следующим образом: [{«dishs»: [{«name»: «Salade», «id»: 5}], «name»: «…», «id»: 1 }]. Аннотация ExclusionPolicy не применяется.
У тебя есть идеи почему? Если я установлю все поля в одной и той же сущности, это будет хорошо работать, но нарушит весь мой шаблон …
Спасибо
Вы наследуете от BaseCategory — вы не можете ожидать, что это сработает.
Установите ваш ExclusionPolicy в базовом классе — в этом случае ваш расширенный класс будет наследоваться от BaseCategory.
Других решений пока нет …