2

我在我的Symfony2項目中使用FOSrestBundle。我有這樣創造了一個觀點:如何使用JMS序列化器序列化不是個人模型的對象?

$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對象?

回答

0

如果您使用註釋,JMS序列化程序對每個類都有排除策略,您可以看到here

我會建議,而不是默認情況下排除所有和只在您要公開的屬性添加序列化組註釋。您可以添加多個組,因此在這種情況下,您的序列化上下文可以包含「form」和「translationBasic」組,然後將「form」組添加到formView上的所有屬性,並將「translationBasic」添加到您想要的Translation類上的所有屬性。

+0

但我需要重寫供應商的FormView類..這聽起來不像是一個最佳實踐 – iBadGamer

相關問題