Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php FOSRestBundle不';t在Symfony 4.1中工作_Php_Symfony_Fosrestbundle - Fatal编程技术网

Php FOSRestBundle不';t在Symfony 4.1中工作

Php FOSRestBundle不';t在Symfony 4.1中工作,php,symfony,fosrestbundle,Php,Symfony,Fosrestbundle,在Symfony 4.1项目下使用FOSRestBundle返回视图时,我遇到问题 这是来自我的控制器的代码: class NewsController extends FOSRestController { public function getNewsAction() { $data = ['news1', 'news2']; $view = $this->view($data, 200); return $this

在Symfony 4.1项目下使用FOSRestBundle返回视图时,我遇到问题

这是来自我的控制器的代码:

class NewsController extends FOSRestController
{

    public function getNewsAction()
    {
        $data = ['news1', 'news2'];

        $view = $this->view($data, 200);

        return $this->handleView($view);
     }
}
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 ] }
framework.yaml

framework:
    secret: '%env(APP_SECRET)%'
    php_errors:
        log: true

sensio_framework_extra:
    view:        { annotations: true }
framework:
    # templating: { engines: ['twig'] }
因此,我有非常基本的配置,但仍然会出现如下错误:

(1/1)运行时异常 必须启用SensioFrameworkExtraBundle视图注释才能使用ViewResponseListener

我试图删除“查看:查看\u响应\u侦听器:'force'”,但出现以下错误:

必须将Symfony\Bundle\FrameworkBundle\Templating\EngineInterface>的实例注入FOS\RestBundle\View\ViewHandler中才能呈现模板

我已经挣扎了好几个小时了。是因为Symfony 4测试版的状态吗?或者我做错了什么?也许我错过了一些依赖?我在官方文件中找不到任何关于这个问题的有用信息

必须启用SensioFrameworkExtraBundle视图注释


将行添加到
config/packages/framework.yaml

framework:
    templating: { engines: ['twig'] }
它会解决的

必须将Symfony\Bundle\FrameworkBundle\Templating\EngineInterface>的实例注入FOS\RestBundle\View\ViewHandler中才能呈现模板


您是否在请求中发送
Accept:application/json

如果不需要,则不一定需要
twig
,但需要从bundle配置中的格式配置中删除
html

fos_rest:
    format_listener:
        rules:
            - { path: ^/, prefer_extension: true, fallback_format: json, priorities: [ json ] }

默认设置是在优先级中包含
html
,这需要
twig

模板组件集成在Symfony 4.3中。所以模板部分必须从config/packages/framework.yaml中删除(或注释)

framework:
    secret: '%env(APP_SECRET)%'
    php_errors:
        log: true

sensio_framework_extra:
    view:        { annotations: true }
framework:
    # templating: { engines: ['twig'] }
要在ViewHandler中将细枝定义为模板服务,请在config/services.yaml中添加以下行

fos_rest.templating: alias: twig fos_rest.模板:
别名:twigSorry,我的复制粘贴错误。它不适用于真值和假值。顺便说一句,可能与有关,4.1将是主开发版本。4.0仅处于发布候选阶段。根据fosrestbundle,它还不支持4.x。没什么大不了的。它很管用,但我不明白的是,我已经在我的项目中使用了twig。当我想在ViewHandler中使用通用框架配置时,为什么我必须添加它?谢谢!这为我解决了Symfony 4.1的问题。这应该是正确的答案!如果您想对所有路由使用json响应,规则{fallback_format:json}就足够了!这与问题有什么关系?Alexander Matrosov建议将模板行添加到配置中,以解决问题的最后一个错误(我现在无法添加注释答案)。但在Symfony 4.3中,它是不推荐使用的解决方案。