2013-08-01 12 views
3

我的Symfony2 API使用帶有屬性註釋的FOSRestBundle和JMSSerializer,但有很多次我不想公開每個屬性。我知道JMS有排除組,但我無法弄清楚如何將這些包含在我的Symfony控制器中。應該有一種動態使用PHP的方法,但這似乎也從文檔中丟失了。FOSRestBundle和JMSSerializer運行時公開

+0

你能不能句話的具體問題比如「如何在FOSRest控制器中使用JMSSerializer排除組?」那麼「在動態基礎上使用PHP,但似乎從文檔中缺少了什麼」是什麼意思? – nifr

回答

4

如果您在本example使用View類一樣,你可以設置系列化方面與setSerializationContext方法

public function getUsersAction() 
{ 
    $data = // get data, in this case list of users. 
    $view = $this->view($data, 200) 
     ->setSerializationContext(SerializationContext::create()->setGroups(array('list'))) 
    ; 

    return $this->handleView($view); 
} 
+0

謝謝,我之前閱讀過這些信息,但從未點擊過。 – MechEngineer

+3

而不是設置組,我如何添加/刪除字段?有誰知道? – DavidLin

+1

您可以根據請求使用組來隱藏/顯示某些字段,也可以單獨處理實體並自行刪除字段。 – MechEngineer

4

由於FOSRest 2.0版本中,你必須使用此:

$view = $this->view($response, $code); 
$view->setContext($view->getContext()->setGroups(['get_client']));