0

CakePHP で REST をセットアップする方法を説明するこの Web サイトのチュートリアルに従いましたが、これをすべて実行した後、ブラウザーでコントローラーを呼び出すと (たとえば、デフォルトの CRUD アクションを持つ PostsController があります)、まだ html が表示されます。私の応答として(xmlではありません)。呼び出されているビュー ファイルは、app/views/posts/index.ctp私が配置したファイルではなく、にあるファイルのようapp/views/posts/xml/index.ctpです。

ここで他に何が欠けているか教えてください。

ありがとうございました

4

3 に答える 3

3

CakePHP のどのバージョンを使用していますか? バージョン 2.x を使用している場合、解決策は非常に簡単です。

  1. この行をコントローラーに必ず含めてください

    public $components = array('RequestHandler');
    
  2. app/Config/routes.php に移動し、次の行を の行の前に追加しますrequire CAKE . 'Config' . DS . 'routes.php';

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

    examples は基本的にビューの名前にすぎません。

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

    url/controller.xml
    

これでうまくいくはずです。RequestHandler コンポーネントを含めると、「Router::parseExtensions() RequestHandler と組み合わせて使用​​すると、レイアウト ファイルとビュー ファイルが要求されたタイプに一致するファイルに自動的に切り替わります」

于 2012-10-25T19:24:57.153 に答える
0

xml レイアウトを作成しましたか? 空白のレイアウトを作成し、ビューでレイアウトを xml レイアウトに設定するだけでよい場合があります。

于 2012-04-18T23:38:57.020 に答える
0

コントローラー関数に次のようなものを入れてみてください (または beforeFiler でさらに良い):

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

また、Config/routes.php が

Router::parseExtensions('xml');
于 2012-04-18T23:43:16.923 に答える