FOS rest bundle: unable to find template

15,217

Solution 1

I managed to resolve this issue by setting the listener explicitly to false:

fos_rest:
    format_listener: false

EDIT

This also works:

fos_rest:
    format_listener:
        prefer_extension: false
        default_priorities:
            - json

Solution 2

For FOSRestBundle version 2.0 the config should be

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

Solution 3

(For reference) If One is testing with a rest client or manually be sure to set the header in your request: Accept:application/json

Because fosRestBundle tries to determine the proper response type from the headers in the request.

Solution 4

Annotate your controller action with @View to resolve this issue.

use FOS\RestBundle\View\View;

Have a look at the documentation chapter View Response listener.


If you don't want to annotate every action - you can set the @View annotation for a complete class using my pull request here.

Add this to your composer.json to use the PR.

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

// ...

"repositories": [
    {
        "type": "vcs",
        "url": "https://github.com/nifr/FOSRestBundle"
    },
Share:
15,217
Tjorriemorrie
Author by

Tjorriemorrie

I am a self-taught developer: started out with php and switched over to python.

Updated on June 04, 2022

Comments

  • Tjorriemorrie
    Tjorriemorrie almost 2 years

    I get the exception:

    Unable to find template ""

    The other similar questions didn't help; and weirdly enough it was working fine and then suddenly started giving me this exception.

    composer:

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

    I'm following Automatic route generation: single RESTful controller (for simple resources)

    config:

    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 }
    

    routing:

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

    controller:

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