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” >
这基本上是我的默认layo UT。 所以我的猜测是布局没有改变
其他人遇到过这个问题吗?我忘了在我的控制器中添加什么东西?所有的帮手和组件都已到位。
答
脚本中没有太多可能出错的地方。在过滤器良好并且设置视图模板之前也是如此。我唯一能想到的就是你的ajax请求不会被识别。
RequestHandler :: isAjax()的代码非常简单:
function isAjax() {
return env('HTTP_X_REQUESTED_WITH') === "XMLHttpRequest";
}
所以我建议你登录到瓦尔看看它认定为阿贾克斯。我还听说有时候缓存将这个问题搞砸了。试试$ this-> disableCache();在检查它是否是ajax之前。
调试......是不是很有趣
+0
关于缓存问题的任何来源? – Moxy 2014-01-20 16:50:30
问题解决了,我movie_autocomplete.ctp的名字有资本,所以他正在寻找并不存在movie_auto_complete.ctp。 发现那个时我感到很傻... – Christophe 2011-12-15 21:36:00