Symfony FOSRestBundle和JMSSerializer运行时公开

Symfony FOSRestBundle和JMSSerializer运行时公开,symfony,fosrestbundle,jmsserializerbundle,Symfony,Fosrestbundle,Jmsserializerbundle,我的symfony2api使用FOSRestBundle和JMSSerializer以及属性注释,但很多时候我不想公开每个属性。我知道JMS有排除组,但我不知道如何将它们包括在我的Symfony控制器中。应该有一种动态使用PHP的方法,但文档中似乎也缺少这种方法。如果像这样使用View类,可以使用setSerializationContext方法设置序列化上下文 public function getUsersAction() { $data = // get data, in this

我的symfony2api使用FOSRestBundle和JMSSerializer以及属性注释,但很多时候我不想公开每个属性。我知道JMS有排除组,但我不知道如何将它们包括在我的Symfony控制器中。应该有一种动态使用PHP的方法,但文档中似乎也缺少这种方法。

如果像这样使用
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);
}

自FOSRest 2.0版本以来,您必须使用:

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

您能否提出一个具体的问题,如“如何在FOSRest控制器中使用JMSSerializer排除组?”以及“在动态基础上使用PHP,但文档中似乎缺少这一点”是什么意思?我如何添加/删除字段,而不是设置组?有人知道吗?您可以根据请求使用组隐藏/公开某些字段,也可以单独处理实体并自己删除字段。