私は以前、そのエクステンションを解析してJSONリクエストを処理していたコントローラメソッドを持っていましたが、クロスドメインajaxまで開く必要があるので、JSONPバリアントを解析したい拡張も同様です。CakePHP、extensions and layouts
Router::parseExtensions('json', 'jsonp');
は、これまでのところ、すべてがうまくているが、結果がレンダリングされたときの幸福が終了:私はすでに私のroutes.php
ファイルを更新しました。 .json
拡張子は自動的にjson/default.ctp
レイアウトを取得しますが、.jsonp
コンテンツは、引き続き非特定のデフォルトレイアウト(および不要なHTMLコンテンツすべて)を採用し続けます。 RequestHandler::setContent()
を使用してレスポンスのコンテンツタイプをjson
とjs
に設定しようとしましたが、指定されたレイアウトディレクトリへの呼び出しをトリガーするものではありません。
どのコンテンツ固有のレイアウトディレクトリが呼び出されるかは誰に分かりますか? jsonp/default.ctp
を作成しようとしましたが、js/default.ctp
レイアウトをJSONP結果で作成しようとしましたが、何も関与していないようです。私はちょうど通常のデフォルトを取得します。
これらのレイアウトディレクトリに拡張子/コンテンツタイプがどのようにマッピングされるかについての洞察は、非常に高く評価されます。私は一時的に明示的にlayoutPath
値を設定することでこれを解決してきました