weixin_33695450 2011-12-15 20:24 采纳率: 0%
浏览 43

Cakephp $ layout不会改变

So here is the situation: I have my default.ctp and my ajax.ctp where my ajax.ctp is just the blank $content_for_layout;

When i'm doing an autocomplete ajax call I must change the layout to 'ajax' obviously. So I have this function in my controller

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

However when i look at the results of my autocomplete I get this in my options:

  • 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">

Which basicly is my default layout. So my guess is that the layout didn't change

Anyone else encountered this problem? Did I forget to add something in my controller ? All the helpers and components are in place.

  • 写回答

1条回答 默认 最新

  • 10.24 2011-12-15 21:02
    关注

    There isn't that much that could go wrong in your script. Before filter is good and setting the view template is also. The only thing I can think of is that your ajax request somehow doesn't get recognized.

    The code of RequestHandler::isAjax() is pretty simple:

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

    So I suggest logging your vars to see if it's recognized as ajax. Also I heard sometimes the caching screws this up. Try $this->disableCache(); before checking if it's ajax.

    Debugging ... isn't it fun

    评论

报告相同问题?

悬赏问题

  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法
  • ¥15 基于卷积神经网络的声纹识别
  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP