2013-08-01 73 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']));