CakePHP、扩展和布局

CakePHP、扩展和布局,cakephp,cakephp-1.3,Cakephp,Cakephp 1.3,我有一个控制器方法,长期以来一直通过解析该扩展来处理JSON请求,但现在我需要将其开放给跨域ajax,因此我还想通过解析该扩展来提供一个JSONP变体。我已经更新了我的routes.php文件: Router::parseExtensions( 'json', 'jsonp' ); 到目前为止一切都很好,但当结果出来时,幸福就结束了。当.json扩展自动选择json/default.ctp布局时,.jsonp内容继续采用非特定的默认布局(及其所有不必要的HTML内容)。我尝试使用Request

我有一个控制器方法,长期以来一直通过解析该扩展来处理JSON请求,但现在我需要将其开放给跨域ajax,因此我还想通过解析该扩展来提供一个JSONP变体。我已经更新了我的
routes.php
文件:

Router::parseExtensions( 'json', 'jsonp' );
到目前为止一切都很好,但当结果出来时,幸福就结束了。当
.json
扩展自动选择
json/default.ctp
布局时,
.jsonp
内容继续采用非特定的默认布局(及其所有不必要的HTML内容)。我尝试使用
RequestHandler::setContent()
将响应内容类型设置为
json
js
,但这似乎不是触发对给定布局目录调用的原因

有人知道是什么决定了调用哪个特定于内容的布局目录吗?我试着创建
jsonp/default.ctp
,我试着用我的jsonp结果创建一个
js/default.ctp
布局,但似乎没有任何效果。我只是得到了正常的默认值


如果您能深入了解扩展/内容类型如何映射到这些布局目录,我们将不胜感激。

我已经通过显式设置
layoutPath
值暂时解决了这个问题:

$this->layoutPath = $params['url']['ext'];
这感觉像是必须有更好的解决方案的事情之一,但也许就是这样。我将把这个问题留一点时间,希望其他人有一个解决方案,涉及蛋糕的automagic