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


FOSRestBundle, filtering out object properties in JSON response

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

/**
 * @Rest'View()
 */
public function getEventsAction(Request $request)
{
  // security checks
  return $this->getDoctrine()->getRepository('SomeBundle:Event')->findAll();
}

问题是,这返回所有对象属性和关系,在许多情况下我不希望这样,例如,对于包含散列密码和所有内容的 User 对象。

在 JSON 中编码 Doctrine 对象时,有没有办法设置自动过滤器?还是我必须创建一个仅获取所需数据的查询构建器?

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

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

另外,请查看我的另一个答案,以获取有关如何将其与FOSRestBundle一起使用的更多信息