FOSRestBundle,过滤掉JSON响应中的对象属性

时间:2014-11-20 17:20:48

标签: php json symfony fosrestbundle

我正在使用FOSRestBundle为Symfony2项目构建API,我经常只返回要在JSON中编码的Doctrine对象。通常这样:

/**
 * @Rest\View()
 */
public function getEventsAction(Request $request)
{
  // security checks

  return $this->getDoctrine()->getRepository('SomeBundle:Event')->findAll();
}

事实上,这会返回所有对象属性和关系,并且在很多情况下我不想要这样,例如,使用包含散列密码和所有内容的User对象。

在JSON中编码Doctrine对象时,有没有办法设置自动过滤器?或者我是否必须创建仅获取所需数据的QueryBuilder?

1 个答案:

答案 0 :(得分:4)

我强烈建议您使用JMSSerializerBundle,它会根据您的需要为您提供尽可能多的选项。将项目包含在项目中后,可以将实体配置为仅序列化特定属性。有很多方法可以做到,你可以在文档的exclusion strategies部分看到所有不同的方法。

您可以排除特定属性等等。看一看。

另外,请查看my other answer以获取有关如何将其与FOSRestBundle一起使用的更多信息