2011-07-03 142 views
5

我有一個控制器方法早已被解析該擴展處理JSON請求,但現在我需要打開它的跨域AJAX,所以我想通過解析,要提供一個JSONP變種擴展也是如此。我已經更新了我的routes.php文件:CakePHP的,擴展和佈局

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

到目前爲止,一切都很好,但是當結果呈現的幸福結束。雖然.json擴展自動獲取json/default.ctp佈局,但.jsonp內容繼續採用非特定的默認佈局(及其所有不必要的HTML內容)。我嘗試使用RequestHandler::setContent()將響應內容類型設置爲jsonjs,但這似乎並未觸發對給定佈局目錄的調用。

有誰知道什麼做確定哪些特定的內容佈局目錄被稱爲?我試着創建jsonp/default.ctp,我試着用我的JSONP結果創建一個js/default.ctp佈局,但似乎沒有任何參與。我只是得到了正常的默認值。

任何深入瞭解擴展/內容類型如何映射到這些佈局目錄將不勝感激。

回答

1

我已經明確地設置layoutPath值暫時解決了這個:

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

這感覺就像那些東西,其中必須有一個更好的解決方案之一,但也許這就是它。我打算留下一些問題,希望別人有一個涉及Cake的automagic的解決方案。