2011-07-03 9 views
5

私は以前、そのエクステンションを解析してJSONリクエストを処理していたコントローラメソッドを持っていましたが、クロスドメインajaxまで開く必要があるので、JSONPバリアントを解析したい拡張も同様です。CakePHP、extensions and layouts

Router::parseExtensions('json', 'jsonp'); 

は、これまでのところ、すべてがうまくているが、結果がレンダリングされたときの幸福が終了:私はすでに私のroutes.phpファイルを更新しました。 .json拡張子は自動的にjson/default.ctpレイアウトを取得しますが、.jsonpコンテンツは、引き続き非特定のデフォルトレイアウト(および不要なHTMLコンテンツすべて)を採用し続けます。 RequestHandler::setContent()を使用してレスポンスのコンテンツタイプをjsonjsに設定しようとしましたが、指定されたレイアウトディレクトリへの呼び出しをトリガーするものではありません。

どのコンテンツ固有のレイアウトディレクトリが呼び出されるかは誰に分かりますか? jsonp/default.ctpを作成しようとしましたが、js/default.ctpレイアウトをJSONP結果で作成しようとしましたが、何も関与していないようです。私はちょうど通常のデフォルトを取得します。

これらのレイアウトディレクトリに拡張子/コンテンツタイプがどのようにマッピングされるかについての洞察は、非常に高く評価されます。私は一時的に明示的にlayoutPath値を設定することでこれを解決してきました

答えて

1

$this->layoutPath = $params['url']['ext']; 

これは、よりよい解決策がなければならないものの一つのように感じますが、多分これはそれです。私は、他の誰かがCakeのオートマティックを含む解決策を持っていることを期待して、少し質問を残しておきます。