我希望我能以良好的方式发布这个问题。 我试图在谷歌和symfony文档中找到答案,但没有什么对我有帮助 - 可能是由于我的symfony技能(我不知道这个框架 - 我正在努力研究:))。
我的symfony版本是3.3.9,FOSRestBundle:2.2.0 我的问题是我有一个具有此配置的rest api项目:
fos_rest:
view:
default_engine: twig
view_response_listener: force
force_redirects:
html: true
# xml: true
formats:
jsonp: true
json: true
xml: true
rss: false
templating_formats:
html: true
json: true
mime_types:
json: ['application/json', 'application/x-json', 'application/vnd.example-com.foo+json']
rss: 'application/rss+xml'
jpg: 'image/jpeg'
png: 'image/png'
jsonp_handler: ~
body_listener: true
param_fetcher_listener: force
allowed_methods_listener: true
access_denied_listener:
json: true
format_listener:
rules:
- { path: ^/api/v1, priorities: [html, json, xml], fallback_format: json, prefer_extension: false }
routing_loader:
default_format: ~
exception:
codes:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': 404
'Doctrine\ORM\OptimisticLockException': HTTP_CONFLICT
messages:
'Symfony\Component\Routing\Exception\ResourceNotFoundException': true
service:
view_handler: fos_rest.view_handler.default
我的控制器操作看起来:
/**
* @ViewAnnotation()
*/
public function getArticleAction()
{
$data = [
'any' => 'any'
]; // get data, in this case list of users.
$view = $this->view($data, 200)->setTemplate('MyBundle:Article:getArticles.html.twig');
return $this->handleView($view);
}
问题是这段代码返回的是html而不是json。而且,对于我不想呈现视图的其他控制器,我有这样的信息:
Unable to find template "" (looked into: /var/www/html/app/Resources/views, /var/www/html/vendor/symfony/symfony/src/Symfony/Bridge/Twig/Resources/views/Form).
如果我尝试更改config.yml(fos_rest部分),我的api会返回: { “任何”: “任何”}
我可以使用JsonResponse并通过跳过FOSRestBundle来做我想要的,但我想了解并能够使用FOSRestBundle。 任何人都可以帮助我,一步一步地写下我能达到我想要的东西,或者给我任何暗示有什么问题吗?