Cakephp $布局不会改变

时间:2011-12-15 20:24:21

标签: ajax cakephp layout controller

所以情况如下: 我有我的default.ctp和我的ajax.ctp,其中我的ajax.ctp只是空白的$ content_for_layout;

当我正在进行自动完成ajax调用时,我必须将布局更改为'ajax'。 所以我在我的控制器中有这个功能

function beforeFilter() {
        if($this->RequestHandler->isAjax()) {
            $this->layout = 'ajax';
        }
    }

然而,当我查看自动填充的结果时,我会在我的选项中得到这个:

  • DOCTYPE html PUBLIC“ - // W3C // DTD XHTML 1.0 Transitional // EN”“http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
  • html xmlns =“http://www.w3.org/1999/xhtml”>

基本上是我的默认布局。 所以我的猜测是布局没有改变

其他人遇到过这个问题?我忘记在控制器中添加一些东西了吗?所有助手和组件都已到位。

1 个答案:

答案 0 :(得分:0)

你的剧本中没有那么多可能出错的地方。在过滤器良好之前,设置视图模板也是如此。我能想到的唯一一件事就是你的ajax请求不知所措。

RequestHandler :: isAjax()的代码非常简单:

function isAjax() {
  return env('HTTP_X_REQUESTED_WITH') === "XMLHttpRequest";
}

所以我建议记录你的变量,看看它是否被识别为ajax。我也听说有时缓存会搞砸了。试试$ this-> disableCache();在检查它是否是ajax之前。

调试......不是很有趣