我使用FOSRestBundle創建了一個簡單的REST api,並使用JMSSerializerBundle返回序列化對象。使用FOSRestBundle/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 \資源\ CONFIG \串行\ 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":{}}