2013-08-02 8 views
10

を見つけることができない、私は例外を取得:FOS残りのバンドル:テンプレート

テンプレートを見つけることができません「」

他の同様の質問が助けにはなりませんでした。奇妙なことに、それはうまくいきましたし、そして突然私にこの例外を与え始めました。

作曲:

"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(); 
    } 
+0

である必要があり、ここで私の答えをチェックしてください:セクター:cget.htmlテンプレート」MainBundleを見つけることがhttp://stackoverflow.com/a/32779936/828366は –

答えて

10

は私がfalseに明示的にリスナーを設定することにより、この問題を解決するために管理:

fos_rest: 
    format_listener: false 

EDIT

また、これは動作します:

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

私はそれが正しい解決策だとは思わない。 Content Negotiation機能全体をオフにしました。 –

+0

@WilliamDURANDはあなたの気に入った編集をストライクしますか? – Tjorriemorrie

+1

これは私がここであなたに言ったことではありません:https://github.com/FriendsOfSymfony/FOSRestBundle/issues/518#issuecomment-22162359。しかし、ええ、それは設定の問題です。 これは、 'format'を設定するのに好ましい方法としてextensionを使用していますが、とにかく' prefer_extension'パラメータを 'true'にするか、' Accept'ヘッダを使い、優先順位を設定する(Content Negotiation機能)。 –

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" 
    }, 
+0

できません。小枝"。すでに余分なバンドルを使用しています。 config updated updated – Tjorriemorrie

+0

私はルータがフォーマットがjsonであることを拾わないと思う – Tjorriemorrie

1

(参考までに) Oneがクライアントと一緒にテストしているか、手動で確認している場合あなたの要求にヘッダーを設定する: Accept:application/json

fosRestBundleは要求のヘッダーから適切な応答タイプを決定しようとします。

-1

FOSRestBundleバージョン2.0の場合はconfigが

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