jan*_*s83 9 php symfony fosrestbundle
我在使用Symfony 4.1项目下的FOSRestBundle返回视图时遇到问题.
这是我的控制器的代码:
class NewsController extends FOSRestController
{
public function getNewsAction()
{
$data = ['news1', 'news2'];
$view = $this->view($data, 200);
return $this->handleView($view);
}
}
Run Code Online (Sandbox Code Playgroud)
fos_rest.yaml
fos_rest:
param_fetcher_listener: true
allowed_methods_listener: true
routing_loader: true
view:
view_response_listener: 'force'
format_listener:
rules:
- { path: ^/api, prefer_extension: true, fallback_format: json, priorities: [ json, html ] }
Run Code Online (Sandbox Code Playgroud)
framework.yaml
framework:
secret: '%env(APP_SECRET)%'
php_errors:
log: true
sensio_framework_extra:
view: { annotations: true }
Run Code Online (Sandbox Code Playgroud)
所以我有非常基本的配置,我仍然会收到这样的错误:
(1/1)RuntimeException必须启用SensioFrameworkExtraBundle视图注释才能使用ViewResponseListener.
我试图删除"view:view_response_listener:'force'",但后来我遇到了这个错误:
必须在FOS\RestBundle\View\ViewHandler中注入Symfony\Bundle\FrameworkBundle\Templating\EngineInterface>的实例才能呈现模板.
我几个小时都在挣扎.是因为Symfony 4 beta状态?或者也许我做错了什么?也许我想念一些家属?我在官方文档中找不到任何有关此问题的帮助.
Ale*_*sov 17
添加行到 config/packages/framework.yaml
framework:
templating: { engines: ['twig'] }
Run Code Online (Sandbox Code Playgroud)
它会解决
必须在FOS\RestBundle\View\ViewHandler中注入Symfony\Bundle\FrameworkBundle\Templating\EngineInterface>的实例才能呈现模板.
你发送Accept: application/json请求了吗?
如果没有,您不一定需要twig,但需要html从bundle config中的格式配置中删除:
fos_rest:
format_listener:
rules:
- { path: ^/, prefer_extension: true, fallback_format: json, priorities: [ json ] }
Run Code Online (Sandbox Code Playgroud)
默认是具有html优先级,并且需要twig.
| 归档时间: |
|
| 查看次数: |
7416 次 |
| 最近记录: |