控制器不呈现模板

Controller not rendering the template

我正在使用 FOS 包在 symfony 中实现 REST API。

我有一个名为 termsController 的控制器,我在其中实现了 REST API 的所有路由。

用于放置、获取、post 和删除 return 数组的路由,但我希望函数 newTermAction(其路由为 /terms/new)呈现模板。

也就是说,这条路线应该指向我进行 post 调用的表格

但是模板没有得到渲染,输出是原始 html 代码

这是函数

public function newTermsAction()
  {

    return $this->render('default/termForm.html.twig');
  }

Config.yml 文件

sensio_framework_extra:
    view:   {   annotations: false }
    router: {   annotations: true }

fos_rest:
    param_fetcher_listener: true
    body_listener: true
    format_listener: true
    view:
        view_response_listener: 'force'
        formats:
            xml: true
            json : true
        templating_formats:
            html: true
        force_redirects:
            html: true
        failed_validation: HTTP_BAD_REQUEST
        default_engine: twig
    routing_loader:
        default_format: json

我试过用这个,但没用

$view = $this->view()
            ->setTemplate("TermsBundle:Default:termForm.html.twig");
    return $this->handleView($view);

Error : Attempted to call an undefined method named \"view\" of class

尝试这样的事情:

public function newTermsAction(){
    $view = $this->view(null, 200)
        ->setTemplate('default/termForm.html.twig')
    ;

    return $this->handleView($view)
}

您可能需要调整一些配置。 查看 this part of the docs 了解更多详情。

编辑:问题是控制器没有正确继承 FOSRestController,这是正确的方法。

此外,不要忘记在请求末尾添加 html 格式,否则控制器将尝试呈现配置中设置的默认格式,例如:

terms/new.html