Symfony2,FOSRestBundle:序列化组返回空

时间:2017-08-07 09:16:23

标签: symfony fosrestbundle symfony-2.8 serializer

我正在使用FOSRest Bundle来构建一个小API,我想在其中返回一个资源但只暴露一些属性。 我正在使用Symfony的默认Serializer。

这是我的实体:

class myEntity
{
     private foo;

     * @Groups({"myGroup"})
     private bar;

     getFoo(){...}
     getBar{...}
}

我的控制员:

* @ParamConverter("myEntity ")
public function getAction(myEntity $myEntity)
{    
    $context = new Context();
    $context->addGroups('myGroup');

    $view = $this->view($myEntity, 200)->setTemplate("default/myEntity.html.twig")->setTemplateVar('myEntity');
    $view->setContext($context);

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

当我尝试执行我的控制器时,我得到一个空对象作为响应:{} 如果我删除setContext()部分,我会得到我的整个实体,包括我不想要的属性。

我做错了什么? 感谢

1 个答案:

答案 0 :(得分:1)

首先,您的控制器应该扩展FOSRestController 作为回应,您可以返回JsonResponse,如下所示:

AppBundle\Entity\EntityClass:
  exclusion_policy: ALL

我还建议您将序列化程序配置移动到YAML文件,如上所述here

默认情况下,使用exclusion_policy排除所有属性,然后为某些组添加。

jms_serializer:
    metadata:
        directories:
            APP:
                namespace_prefix: "AppBundle"
                path: "@AppBundle/Resources/config/serializer/"

在config.yml文件的JMS序列化程序配置中,您必须指定放置所有序列化配置的目录,如下所示:

[oouser@SVSATVMWHOST03-SITHPOO test]$ sshpass -e sftp -o BatchMode=no -b - backup_sftp@10.58.44.207:/Restore
Changing to: /Restore
pwd

sftp> pwd
Remote working directory: /Restore