我有一个使用FOSRestBundle创建的简单REST api,并使用JMSSerializerBundle返回序列化对象。
我的捆绑包中的一个实体使用位于另一个捆绑包中的实体。
我为我的实体设置了序列化组,但显然没有为聚合实体设置它们,因此它的json结果为空。
我已经按照YAML组配置的文档:http://jmsyst.com/libs/serializer/master/reference/yml_reference但该文件似乎未使用(向实体的属性添加组没有任何效果,如果我的YAML文件是,我不会收到任何错误无效的)。
以下是代码:
MyCompany的\ MyBundle \实体\ Meeting.php
class Meeting
{
/**
* @var Point
*
* @ORM\Column(name="location", type="point", nullable=true)
* @JMS\Groups({"privateContact"})
*/
private $location;
// Getters, setters and other stuff
}
ACME \ SomeBundle \ ORM \ Point.php
class Point
{
/**
* @var float
*/
private $latitude;
/**
* @var float
*/
private $longitude;
// Getters, setters
}
MyCompany的\ MyBundle \资源\配置\串行\ Model.Point.yml
ACME\SomeBundle\ORM\Point:
properties:
latitude:
groups: ['privateContact']
longitude:
groups: ['privateContact']
MyCompany的\ MyBundle \控制器\ ApiController.php
/**
* @Rest\View(serializerGroups={"privateContact"})
*/
public function getMeetingAction()
{
...
return array(
'status' => 'OK',
'meeting' => $meeting
);
}
产生的JSON
"meeting":{"id":10,"date":"2015-07-16T19:20:00+0200","location":{}}
答案 0 :(得分:0)
对于遇到此问题的其他人,我发现此示例中的View注释不起作用。但是,如果我在控制器操作中使用正确的组设置序列化上下文,那么它的工作正常:
$view->setSerializationContext(SerializationContext::create()->setGroups('site'));