CakePHP,扩展和布局

时间:2011-07-03 19:54:10

标签: cakephp cakephp-1.3

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

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

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

有谁知道什么决定了哪个特定于内容的布局目录?我尝试创建jsonp/default.ctp并尝试使用我的JSONP结果创建js/default.ctp布局,但似乎没有任何参与。我只是得到了正常的默认值。

对于如何将扩展/内容类型映射到这些布局目录的任何见解都将非常感激。

1 个答案:

答案 0 :(得分:1)

我通过明确设置layoutPath值暂时解决了这个问题:

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

这感觉就像必须有更好的解决方案之一,但也许就是这样。我将暂时搁置这个问题,希望其他人有一个涉及Cake自动化的解决方案。