我想知道为什么如果我使用jquery $.load
函数或某些插件如fancybox在网站上动态加载内容,则不会加载layoug而只会将视图视为元素。
我的$.load()
调用控制器操作,就像它是普通链接一样,如:
$('#demo').load("http://"+ document.domain +"/tables/users/edit/", {input : data}, function(dat){
//whatever
});
这不是我个人不喜欢的东西,像这样我避免创建元素并使用我的控制器中的$this->render('/Elements/xxxx', false);
来调用它们。
我想知道这是否是正确的合作方式,或者是否是某种作弊行为或者cakephp的错误。
我们应该如何对待这种不适合“视图”的内容(因为没有布局,标题......等),而是动态加载“元素”?作为一个观点?作为一个元素?
感谢。
答案 0 :(得分:2)
检查/Layouts/ajax.ctp这是为ajax调用呈现的布局。通常,您不希望在执行ajax调用时在请求的元素周围包含所有页眉和页脚。
答案 1 :(得分:0)
Burzum走在正确的轨道上。
除非您告诉它使用/Layouts/ajax.ctp,否则您的控制器将加载默认布局。因此,在编辑功能中,您需要根据函数的调用方式切换布局。例如:
if($this->request->is('ajax')){
$this->layout = 'ajax';
}// else use controller default...or specify another layout to use here.