我正在尝试为JSON
创建高效的AJAX
响应控制器。到目前为止,我没有将整个实体传递给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
做了很多处理,我开始怀疑这是一个好方法。
答案 0 :(得分:0)
我更喜欢symfony规范化器/序列化器方法。 http://symfony.com/doc/current/components/serializer.html 如上所述,您可以覆盖序列化程序,以便以相同的自定义方式为整个应用程序序列化对象