FOSRestBundle和JMSSerializer运行时公开

时间:2013-08-01 15:09:35

标签: symfony fosrestbundle jmsserializerbundle

我的Symfony2 API使用FOSRestBundle和JMSSerializer,带有属性注释,但有很多次我不希望公开每个属性。我理解JMS有排除组,但我无法弄清楚如何将它们包含在我的Symfony控制器中。应该有一种方法可以在动态的基础上使用PHP,但是文档中似乎也没有这样做。

2 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:4)

自FOSRest 2.0版以来,你必须使用它:

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