2012-04-18 22 views
0

this websiteのチュートリアルに続き、cakePHPでRESTをセットアップする方法を説明していますが、これをすべて行った後、ブラウザでコントローラを呼び出すと(たとえば、デフォルトのCRUDを持つPostsControllerがありますアクション)、私はまだ私の応答(XMLではない)としてHTMLを取得します。呼び出されているビューファイルは、app/views/posts/xml/index.ctpに置かれたものではなく、app/views/posts/index.ctpのものです。cakePHPのRESTful Webサービス

私がここで紛失している他のものを教えてもらえますか?

ありがとうございました

+0

どのURLを呼び出していますか? – Costa

+0

http:// localhost/my_application/my_controller/my_action – user765368

+1

私はあまり風味のないポスターで時間を過ごすと思います。 – Costa

答えて

0

xmlレイアウトを作成しましたか?空白のレイアウトを作成し、ビューでレイアウトをxmlレイアウトに設定する必要があります。

+0

はいXMLレイアウトを作成しました – user765368

0

お使いのコントローラ機能で(またはより良いbeforeFilerに)このようなものを入れてみてください:

if(@($this->request->isXML() || $this->request->params['ext'] == 'xml')) { 
    $this->RequestHandler->respondAs('xml'); 
} 

また、コンフィグ/ routes.phpの中を確認するには、

Router::parseExtensions('xml'); 
+0

動作しません! – user765368

+0

あなたのURLの最後に.xmlを入れていますか? – dubvfan87

3

のCakePHPのバージョンは何です使っていますか?バージョン2.xを使用している場合、ソリューションは非常に簡単です。

  1. あなたのアプリ/コンフィグ/ routes.phpのに入る

    public $components = array('RequestHandler'); 
    
  2. あなたのコントローラでは、この行が含まれていることを確認して、require CAKE . 'Config' . DS . 'routes.php';と行の前に次の行を追加します。

    Router::mapResources('examples'); 
    Router::parseExtensions('xml'); 
    

    ここで、examplesは基本的にはビューの名前です。

  3. xml拡張子を付けてURLを入力してください。

    url/controller.xml 
    

これはトリックを行う必要があります。 RequestHandlerコンポーネントを含むと、 "Router :: parseExtensions()RequestHandlerと一緒に使用すると、自動的にレイアウトとビューファイルが要求されたタイプに一致するファイルに切り替わります。"