繁体   English   中英

Symfony2-具有关系作为json响应的实体

[英]Symfony2 - entities with relationships as json response

我正在尝试为AJAX创建有效的JSON响应控制器。 到目前为止,我没有将整个实体传递给JsonResponse ,而是在内部创建了具有必要数据的数组,在这里我可以轻松地管理输出数据,从而减少了JavaScript工作。 我的动作如下所示:

public function getOffersAction(Request $request)
{
    if (!$request->isXmlHttpRequest()) {
        return new JsonResponse(array('message' => 'You can access this only using Ajax!'), 400);
    }

    /** @var OfferRepository $offerRepository */
    $offerRepository = $this->getDoctrine()->getRepository('IndexBundle:Offer');
    $offers = $offerRepository->findBy(array('state' => 'available'));

    $offersArray = array();
    /** @var Offer $offer */
    foreach ($offers as $offer) {
        $areasArray = array();
        foreach ($offer->getAreas() as $area) {
            $areasArray[] = array(
                'name' => $area->getName()
            );
        }

        $offersArray[] = array(
            'id'        => $offer->getId(),
            'code'      => $offer->getCode(),
            'title'     => $offer->getTitle(),
            'city'      => $offer->getCity(),
            'country'   => $offer->getCountry()->getName(),
            'latitude'  => $offer->getLatitude(),
            'longitude' => $offer->getLongitude(),
            'areas'     => $areasArray
        );
    }

    return new JsonResponse($offersArray, 200);
}

一切都很好,ajax运行很快。

在这一点上,我开始谷歌搜索是否是正确的方法。 我发现了有关序列化实体的JMSSerializerBundle的信息 我尝试使用它,但是遇到序列化关系以及如何使用JS访问相关实体数据的问题。 它是如此复杂,需要为JS做很多处理工作,以至于我开始怀疑这是一个好方法。

你怎么看? 您有什么经验? 哪种方法更好,为什么?

我更喜欢symfony规范化器/序列化器方法。 http://symfony.com/doc/current/components/serializer.html如上所述,您可以覆盖序列化程序以对整个应用程序以相同的自定义方式序列化对象

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM