Php 使用FOSRestBundle/JMSSerializerBundle为其他捆绑包中的实体设置序列化组
我使用FOSRestBundle创建了一个简单的restapi,并使用JMSSerializerBundle返回序列化对象 我的捆绑包的一个实体使用位于另一个捆绑包中的实体 我为我的实体设置了序列化组,但它们显然不是为聚合实体设置的,因此其json结果为空 我遵循了YAML组配置的文档:但该文件似乎未使用(将组添加到实体的属性中没有任何效果,如果我的YAML文件无效,我也不会收到任何错误) 代码如下: MyCompany\MyBundle\Entity\Meeting.php ACME\SomeBundle\ORM\Point.php MyCompany\MyBundle\Resources\config\serializer\Model.Point.yml MyCompany\MyBundle\Controller\ApiController.php 结果JSONPhp 使用FOSRestBundle/JMSSerializerBundle为其他捆绑包中的实体设置序列化组,php,symfony,fosrestbundle,jmsserializerbundle,Php,Symfony,Fosrestbundle,Jmsserializerbundle,我使用FOSRestBundle创建了一个简单的restapi,并使用JMSSerializerBundle返回序列化对象 我的捆绑包的一个实体使用位于另一个捆绑包中的实体 我为我的实体设置了序列化组,但它们显然不是为聚合实体设置的,因此其json结果为空 我遵循了YAML组配置的文档:但该文件似乎未使用(将组添加到实体的属性中没有任何效果,如果我的YAML文件无效,我也不会收到任何错误) 代码如下: MyCompany\MyBundle\Entity\Meeting.php ACME\Some
对于遇到此问题的其他人,我发现本例中的视图注释不起作用。但是,如果我在控制器操作中使用正确的组设置序列化上下文,那么它就可以正常工作:
$view->setSerializationContext(SerializationContext::create()->setGroups('site'));
对于希望使用symfony serializer完成此任务的任何人,可以使用$context=new FOS\RestBundle\context\context()$上下文->集合组(数组('group1');
class Point
{
/**
* @var float
*/
private $latitude;
/**
* @var float
*/
private $longitude;
// Getters, setters
}
ACME\SomeBundle\ORM\Point:
properties:
latitude:
groups: ['privateContact']
longitude:
groups: ['privateContact']
/**
* @Rest\View(serializerGroups={"privateContact"})
*/
public function getMeetingAction()
{
...
return array(
'status' => 'OK',
'meeting' => $meeting
);
}
"meeting":{"id":10,"date":"2015-07-16T19:20:00+0200","location":{}}
$view->setSerializationContext(SerializationContext::create()->setGroups('site'));