控制器不呈现模板

时间:2015-07-22 11:39:19

标签: rest symfony fosrestbundle

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

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

put,get,post和delete的路由返回一个数组,但我想要函数newTermAction(其路由为/ terms / new)来呈现模板。

这就是这条路线应该指向il进行邮局调用的表格

但是模板没有渲染,输出是原始的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

1 个答案:

答案 0 :(得分:1)

尝试类似的东西:

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

    return $this->handleView($view)
}

您可能需要调整一些配置。 有关详细信息,请查看this part of the docs

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

此外,不要忘记在请求结束时添加html格式,否则Controller将尝试呈现配置中设置的默认格式,例如:

terms/new.html