首页 文章

Cakephp $布局不会改变

提问于
浏览
0

所以情况就是这样:我有我的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

    你的脚本中没有那么多可能出错的地方 . 在过滤器良好之前,设置视图模板也是如此 . 我能想到的唯一一件事就是你的ajax请求在某种程度上无法得到认可 .

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

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

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

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

相关问题