2011-07-03 95 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的解决方案。