2013-08-02 18 views
10

otrzymuję wyjątek:FOS Bundle odpoczynek: Nie można znaleźć szablon

Nie można znaleźć szablonu „”

Inne podobne pytania nie pomogło; i, co dziwne, działało dobrze, a potem nagle zaczęło dawać mi ten wyjątek.

kompozytor:

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

Obserwuję 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 } 

routingu:

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

kontroler:

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

Sprawdź moją odpowiedź tutaj: http://stackoverflow.com/a/32779936/828366 –

Odpowiedz

10

udało mi się rozwiązać ten problem przez ustawienie słuchacza wyraźnie false:

fos_rest: 
    format_listener: false 

EDIT

Działa to również:

fos_rest: 
    format_listener: 
     prefer_extension: false 
     default_priorities: 
      - json 
+0

Nie sądzę, że jest to właściwe rozwiązanie. Właśnie wyłączyłeś całą funkcję negocjacji treści. –

+0

@WilliamDURAND czy zmiana ma na ciebie ochotę? – Tjorriemorrie

+1

To nie jest to, co ci powiedziałem tutaj: https://github.com/FriendsOfSymfony/FOSRestBundle/issues/518#issuecomment-22162359. Ale tak, to kwestia konfiguracji. Rzecz w tym, że używasz rozszerzenia jako preferowanego sposobu ustawiania "formatu", który jest zły, ale ... w każdym razie, po prostu ustaw parametr "prefer_extension" na "true", lub użyj nagłówka 'Accept' i masz skonfigurować priorytety (funkcja negocjacji treści). –

3

opisywania akcji kontrolera z @View aby rozwiązać ten problem.

use FOS\RestBundle\View\View; 

Zapoznaj się z dokumentacją chapter View Response listener.


Jeśli nie chcą komentować każde działanie - można ustawić adnotację @View dla pełnego klasy, stosując my pull request here.

Dodaj to do swojego composer.json, aby użyć PR.

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

// ... 

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

Nie można znaleźć szablonu „MainBundle: Sektory: cget.html. Gałązka". Używam już dodatkowego pakietu; config updated – Tjorriemorrie

+0

Myślę, że router nie wykrył, że format jest json – Tjorriemorrie

1

(dla porównania) Jeśli jeden testuje z klientem odpoczynku lub ręcznie upewnij się aby ustawić nagłówek w żądaniu: Zaakceptuj: application/json

Ponieważ fosRestBundle próbuje określić właściwy typ odpowiedzi z nagłówków w żądaniu.

-1

Dla FOSRestBundle wersji 2.0 config powinien być

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