У меня проблема с введением Symfony Serializer в контроллер.Вот рабочий пример того, какое поведение я хочу достичь:
public function someAction(): Response
{
$goodViews = //here I get an array of Value Objects or DTO's ;
$serializer = new Serializer([new ObjectNormalizer()], [new JsonEncoder()]);
// normalize gives me a proper array for serialization
return $this->json(
$serializer->normalize($goodViews)
);
}
Но теперь мне нужно изменить непосредственное создание Serializer с внедрением зависимости в конструктор контроллеров или действие.Другой способ, я думаю, состоит в том, чтобы создать службу, которая получит ObjectNormalizer и JsonEncoder в качестве аргументов, затем создаст Serializer и затем нормализует массивы объектов в специальном методе и вернет результат.Но я не могу понять, как создать сериализатор в service.yml или правильно описать служебные зависимости.Symfony docs также получает простой сервис сериализатора или создает его вручную, как я делал в примере кода.
Я думал получить сервис сериализатора из контейнера сервиса в действии (с $ this-> get ('serializer')) или внедрить его в конструктор контроллеров с помощью NormalizerInterface (мне нужно в основном нормализовать массивы объектов), но этот внедренный сериализатор упал с такой ошибкой:
"message": "Невозможно нормализовать атрибут \"options \ ", потому что введенный сериализатор не является нормализатором", "class": "Symfony \ Component \ Serializer \ Exception \ LogicException",
, поэтому я предполагаю, что его не настроено таким образом, чтобы ямы выполнили создание Serializer вручную.
Наша версия Symfony - 3.4. Спасибо за ваше внимание.