我试图封装来自symfony api的数据。
有我的serialization.yml:
AppBundle\Entity\Parcs:
attributes:
id:
groups: ['parcs']
latitude:
groups: ['parcs']
longitude:
groups: ['parcs']
sac:
groups: ['parcs']
name:
groups: ['parcs']
还有我的ParcsController
:
/**
* @Rest\View(serializerGroups={"parcs"})
* @Rest\Get("/parcs")
*/
public function getParcsAction(Request $request)
{
$parcs = $this->get('doctrine.orm.entity_manager')
->getRepository('AppBundle:Parcs')
->findAll();
/* @var $parcs Parc[] */
return $parcs;
}
根据这些数据,我想获得[id, sac, name, Coordinate[latitude, longitude]]
。
答案 0 :(得分:1)
您只在那里定义了组,但实际上您没有使用序列化程序“使用”它们。您需要安装和配置Serializer Component https://symfony.com/doc/current/components/serializer.html
接下来,您需要扩展AbstractController
,其中包含一个整齐的json()
方法,该方法会自动确定已加载serializer
服务,并会自动序列化您的数据。
// extends AbstractController
/**
* @Rest\View(serializerGroups={"parcs"})
* @Rest\Get("/parcs")
*/
public function getParcsAction(Request $request)
{
... everything you said
return $this->json($parcs);
}
编辑:
此外,我发现您希望latitude
和longitude
成为不同对象的一部分(来自您的回复示例)。如果是这种情况,则需要将这两个属性定义为该新对象(serialization.yml
)的一部分。它们不能成为Parcs
实体的一部分,您需要创建一个新实体。