Я использую FOSrestBundle в своем проекте Symfony2. У меня есть представление, созданное, как это:Как сериализовать объект, который не является персональной моделью с помощью JMS Serializer?
$view = $this
->view(array(
'form' => $this->formHandler->getForm()->createView(),
'translation' => $translation,
), Response::HTTP_OK)
->setTemplate('MyBundle:Translation.html.twig');
Где $translation
является объектом моего собственного расслоения. Дело в том, что когда я вызываю $this->handleView($view)
, FosRestBundle использует сериализатор JMS для сериализации данных моего представления (формы и объекта перевода), но мой объект перевода имеет много атрибутов, бесполезных в моем случае, и ответ слишком велик для того, что Я пытаюсь это сделать.
Я решил использовать аннотацию группы только для получения полезных атрибутов.
Вот контекст с view
группы:
$context = SerializationContext::create()->setGroups(array('view'));
$view->setSerializationContext($context);
И в моем переводе модели я могу установить ExclusionPolicy к all
и добавить полезный приписывает view
группы. Она работает, но с этой конфигурацией (группа view
в контексте сериализации) моя форма объекта (который является Symfony\Component\Form\FormView
) сериализуется {}
Как я могу использовать группу для моей модели перевода, но все еще сериализации мой объект FormView?
Но мне нужно переопределить класс FormView от поставщиков. Это не похоже на лучшую практику – iBadGamer