symfony/FOSRestBundle :空 JSON 响应(使用 symfony 嵌入的序列化器)
symfony/FOSRestBundle : empty JSON response (using the symfony embodied serializer)
我正在学习使用 symfony(使用 FOSRestBundle)构建 API。我正在学习法语教程。显然,我首先尝试自己编写代码,但即使使用 copy/paste,当我对适当的路由 (rest-api .local/places).
如果我 "format" php 数组中的代码,代码工作正常:
public function getPlacesAction(Request $request)
{
$places = $this->get('doctrine.orm.entity_manager')
->getRepository('AppBundle:Place')
->findAll();
/* @var $places Place[] */
$formatted = [];
foreach ($places as $place) {
$formatted[] = [
'id' => $place->getId(),
'name' => $place->getName(),
'address' => $place->getAddress(),
];
}
return new JsonResponse($formatted);
}
但后来我尝试使用 fost Rest 的视图处理程序直接序列化 $places(在 config.yml)
fos_rest:
routing_loader:
include_format: false
view:
view_response_listener: true
format_listener:
rules:
- { path: '^/', priorities: ['json'], fallback_format: 'json' }
并将控制器中的功能更改为以下代码,我得到了 JSON 响应,但“{ [],[],[]}”之间没有任何内容(我确实有 3 个条目我的数据库):
public function getPlacesAction(Request $request)
{
$places = $this->get('doctrine.orm.entity_manager')
->getRepository('AppBundle:Place')
->findAll();
/* @var $places Place[] */
return $places;
}
这是我第一次 post 在 Whosebug 上,所以我希望我的问题很清楚,祝你有愉快的一天。
在我的 app/config/services.yml
中,我添加了这个:
services:
object_normalizer:
class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
# Important! Tag this service or it wouldn't work
tags:
- { name: serializer.normalizer }
我仍然不明白为什么它会起作用,但突然之间我得到了一个很好的 json 回应。
我正在学习使用 symfony(使用 FOSRestBundle)构建 API。我正在学习法语教程。显然,我首先尝试自己编写代码,但即使使用 copy/paste,当我对适当的路由 (rest-api .local/places).
如果我 "format" php 数组中的代码,代码工作正常:
public function getPlacesAction(Request $request)
{
$places = $this->get('doctrine.orm.entity_manager')
->getRepository('AppBundle:Place')
->findAll();
/* @var $places Place[] */
$formatted = [];
foreach ($places as $place) {
$formatted[] = [
'id' => $place->getId(),
'name' => $place->getName(),
'address' => $place->getAddress(),
];
}
return new JsonResponse($formatted);
}
但后来我尝试使用 fost Rest 的视图处理程序直接序列化 $places(在 config.yml)
fos_rest:
routing_loader:
include_format: false
view:
view_response_listener: true
format_listener:
rules:
- { path: '^/', priorities: ['json'], fallback_format: 'json' }
并将控制器中的功能更改为以下代码,我得到了 JSON 响应,但“{ [],[],[]}”之间没有任何内容(我确实有 3 个条目我的数据库):
public function getPlacesAction(Request $request)
{
$places = $this->get('doctrine.orm.entity_manager')
->getRepository('AppBundle:Place')
->findAll();
/* @var $places Place[] */
return $places;
}
这是我第一次 post 在 Whosebug 上,所以我希望我的问题很清楚,祝你有愉快的一天。
在我的 app/config/services.yml
中,我添加了这个:
services:
object_normalizer:
class: Symfony\Component\Serializer\Normalizer\GetSetMethodNormalizer
# Important! Tag this service or it wouldn't work
tags:
- { name: serializer.normalizer }
我仍然不明白为什么它会起作用,但突然之间我得到了一个很好的 json 回应。