FOS rest bundle:无法找到模板

时间:2013-08-02 07:07:50

标签: rest symfony fosrestbundle

我得到例外:

  

无法找到模板“”

其他类似问题没有帮助;奇怪的是它工作正常然后突然开始给我这个例外。

作曲家:

   "friendsofsymfony/rest-bundle": "0.13.*@dev",
   "jms/serializer-bundle": "0.12.*@dev",

我正在关注Automatic route generation: single RESTful controller (for simple resources)

配置:

fos_rest:
    format_listener: true
    routing_loader:
        default_format: json
    view:
        view_response_listener: 'force'
    serializer:
        serialize_null: true

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

路由:

sectors:
    type: rest
    prefix: /{v}
    resource: JJ\MainBundle\Controller\SectorsController

控制器:

/**
 * @RouteResource("Sector")
 */
class SectorsController extends Controller
...
    public function cgetAction()
    {
        return $this->getSectorIndustryRepo()->findAll();
    }

4 个答案:

答案 0 :(得分:11)

我设法通过将侦听器显式设置为false来解决此问题:

fos_rest:
    format_listener: false

修改

这也有效:

fos_rest:
    format_listener:
        prefer_extension: false
        default_priorities:
            - json

答案 1 :(得分:5)

对于FOSRestBundle版本2.0,配置应为

fos_rest:
    format_listener:
        rules:
            prefer_extension: false
            fallback_format: json

答案 2 :(得分:3)

使用@View注释您的控制器操作以解决此问题。

use FOS\RestBundle\View\View;

查看文档chapter View Response listener


如果您不想为每个操作添加注释 - 可以使用my pull request here为完整的类设置@View注释。

将此添加到您的composer.json以使用PR。

"require": {
    "friendsofsymfony/rest-bundle": "dev-dev-view-addition as 0.12.0", 

// ...

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/nifr/FOSRestBundle"
    },

答案 3 :(得分:3)

(供参考)如果One正在使用rest客户端进行测试,或者手动确保在请求中设置标头: 接受:应用/ JSON

因为fosRestBundle尝试从请求中的标头确定正确的响应类型。