Symfony2 - FOSRestBundle - 自定义序列化程序或 JSON 输出
Symfony2 - FOSRestBundle - Custom Serializer or JSON Output
如何使用 FOSRestBundle 创建自定义 JSON 输出?
该代码已有用于将实体和分页结果集转换为 JSON 的方法。以及为 view/edit 输出的 JSON 中的实体生成唯一的 URL。
这些如何与 FOSRestBundle 一起使用?
将 Bars 转换为 JSON 输出的自定义方法示例:
$json = $this->getJsonFactory('Bar')
->dataTableFormat($data);
return $this->jsonResponse($json);
如何将此自定义方法用作视图 JSON 的输出?
$data = $this->getDoctrine()->getRepository('Foo:Bar')
->findAll();
$view = $this->view($data, 200)
->setTemplate("Foo:Bar:index.html.twig")
->setTemplateVar('bars')
;
如果有帮助,可以使用 JMSSerializerBundle。
使用自定义处理程序这是可能的,请参阅文档:http://symfony.com/doc/master/bundles/FOSRestBundle/2-the-view-layer.html#custom-handler
工作示例:
$handler = $this->get('fos_rest.view_handler');
if (!$handler->isFormatTemplating($view->getFormat())) {
$templatingHandler = function ($handler, $view, $request) {
$data = $this->getJsonFactory('Bar')
->dataTableFormat($$view->getData());
$view->setData($data);
return $handler->createResponse($view, $request, 'json');
};
$handler->registerHandler('json', $templatingHandler);
}
$templatingHandler 方法负责调用 JsonFactory 并设置 json 输出的数据格式。
如何使用 FOSRestBundle 创建自定义 JSON 输出?
该代码已有用于将实体和分页结果集转换为 JSON 的方法。以及为 view/edit 输出的 JSON 中的实体生成唯一的 URL。
这些如何与 FOSRestBundle 一起使用?
将 Bars 转换为 JSON 输出的自定义方法示例:
$json = $this->getJsonFactory('Bar')
->dataTableFormat($data);
return $this->jsonResponse($json);
如何将此自定义方法用作视图 JSON 的输出?
$data = $this->getDoctrine()->getRepository('Foo:Bar')
->findAll();
$view = $this->view($data, 200)
->setTemplate("Foo:Bar:index.html.twig")
->setTemplateVar('bars')
;
如果有帮助,可以使用 JMSSerializerBundle。
使用自定义处理程序这是可能的,请参阅文档:http://symfony.com/doc/master/bundles/FOSRestBundle/2-the-view-layer.html#custom-handler
工作示例:
$handler = $this->get('fos_rest.view_handler');
if (!$handler->isFormatTemplating($view->getFormat())) {
$templatingHandler = function ($handler, $view, $request) {
$data = $this->getJsonFactory('Bar')
->dataTableFormat($$view->getData());
$view->setData($data);
return $handler->createResponse($view, $request, 'json');
};
$handler->registerHandler('json', $templatingHandler);
}
$templatingHandler 方法负责调用 JsonFactory 并设置 json 输出的数据格式。