Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用FOSRestBundle/JMSSerializerBundle为其他捆绑包中的实体设置序列化组_Php_Symfony_Fosrestbundle_Jmsserializerbundle - Fatal编程技术网

Php 使用FOSRestBundle/JMSSerializerBundle为其他捆绑包中的实体设置序列化组

Php 使用FOSRestBundle/JMSSerializerBundle为其他捆绑包中的实体设置序列化组,php,symfony,fosrestbundle,jmsserializerbundle,Php,Symfony,Fosrestbundle,Jmsserializerbundle,我使用FOSRestBundle创建了一个简单的restapi,并使用JMSSerializerBundle返回序列化对象 我的捆绑包的一个实体使用位于另一个捆绑包中的实体 我为我的实体设置了序列化组,但它们显然不是为聚合实体设置的,因此其json结果为空 我遵循了YAML组配置的文档:但该文件似乎未使用(将组添加到实体的属性中没有任何效果,如果我的YAML文件无效,我也不会收到任何错误) 代码如下: MyCompany\MyBundle\Entity\Meeting.php ACME\Some

我使用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

结果JSON


对于遇到此问题的其他人,我发现本例中的视图注释不起作用。但是,如果我在控制器操作中使用正确的组设置序列化上下文,那么它就可以正常工作:

$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'));