CakePHP,扩展和布局

5

我有一个控制器方法,一直通过解析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个回答

1

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

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

这感觉像是其中必须有更好的解决方案,但也许这就是它。我将保持问题开放一段时间,希望其他人能提供涉及Cake自动化的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接