【问题标题】:FOSRestBundle and JMSSerializer runtime exposeFOSRestBundle 和 JMSSerializer 运行时公开
【发布时间】:2013-08-01 15:09:34
【问题描述】:

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

【问题讨论】:

  • 您能否提出一个具体的问题,例如“如何在 FOSRest 控制器中使用 JMSSerializer 排除组?”您所说的“动态使用 PHP,但文档中似乎缺少这一点”是什么意思?

标签: symfony fosrestbundle jmsserializerbundle


【解决方案1】:

如果你在这个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);
}

【讨论】:

  • 如何添加/删除字段,而不是设置组?有谁知道吗?
  • 您可以根据请求使用分组隐藏/公开某些字段,也可以单独处理实体并自行删除字段。
【解决方案2】:

从 FOSRest 2.0 版本开始,您必须使用这个:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2013-07-18
    • 2012-10-14
    • 2013-09-28
    相关资源
    最近更新 更多