2014-11-20 79 views
1

我正在使用FOSRestBundle构建Symfony2项目的API,并且我经常简单地返回Doctrine对象以JSON编码。通常是这样的:FOSRestBundle,在JSON响应中筛选出对象属性

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

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

的是,这将返回所有对象的属性和关系,并在许多情况下,我不希望出现这种情况,例如与包含哈希密码,一切User对象。

有没有办法在JSON中编码Doctrine对象时设置自动过滤器?或者我必须创建一个QueryBuilder只提取所需的数据?

回答

3

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

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

此外,看一看my other answer关于如何与FOSRestBundle要安装

+0

FOSRestBundle实际上需要JMSSerializerBundle使用多一点的信息,但我完全忘了。这似乎有我需要的一切,谢谢! – Jukurrpa 2014-11-20 17:36:00