【问题标题】:CakePHP, extensions and layoutsCakePHP、扩展和布局
【发布时间】:2011-09-27 18:08:53
【问题描述】:

我有一个控制器方法,它长期以来一直通过解析该扩展来处理 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 布局,但似乎没有任何参与。我只是得到正常的默认值。

任何关于扩展/内容类型如何映射到这些布局目录的见解将不胜感激。

【问题讨论】:

    标签: cakephp cakephp-1.3


    【解决方案1】:

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

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

    这感觉像是必须有更好解决方案的事情之一,但也许就是这样。我将把这个问题留一点,希望其他人有一个涉及 Cake 自动魔法的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-07
      • 2018-11-25
      • 1970-01-01
      相关资源
      最近更新 更多