CakePHP $布局不会改变

所以这里的情况是:我有我的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”>
  • 这基本上是我的默认布局。 所以我的猜测是布局没有改变

    其他人遇到这个问题? 我忘了在我的控制器中添加什么东西? 所有的帮手和组件都已到位。


    脚本中没有太多可能出错的地方。 在过滤器良好并且设置视图模板之前也是如此。 我唯一能想到的就是你的ajax请求不会被识别。

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

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

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

    调试...不是很有趣

    链接地址: http://www.djcxy.com/p/88455.html

    上一篇: Cakephp $layout will not change

    下一篇: CSS Float: Floating an image to the left of the text