0

我想知道为什么如果我使用 jquery$.load函数或诸如fancybox之类的插件在网站上动态加载内容,layout 没有加载,而只是视图,就好像它是一个元素一样。

$.load()调用一个控制器动作,就好像它是一个普通的链接一样,比如:

$('#demo').load("http://"+ document.domain +"/tables/users/edit/", {input : data}, function(dat){
     //whatever
});

这不是我个人不喜欢的东西,像这样我避免创建元素并$this->render('/Elements/xxxx', false);从我的控制器中调用它们。

我想知道这是否是正确的工作方式,或者它是否是 cakephp 的某种作弊或错误。

我们应该如何处理这种类型的内容,它不是一个正确的“视图”(因为没有布局、标题等),而是一个动态加载的“元素”?作为观点?作为一个元素?

谢谢。

4

2 回答 2

2

检查 /Layouts/ajax.ctp 这是为 ajax 调用呈现的布局。通常,在进行 ajax 调用时,您不希望在请求的元素周围有所有页眉和页脚。

于 2013-06-14T13:47:53.990 回答
0

Burzum 走在正确的轨道上。

您的控制器将加载默认布局,除非您告诉它使用 /Layouts/ajax.ctp。因此,在您的编辑功能中,您希望根据调用功能的方式切换布局。例如:

if($this->request->is('ajax')){
    $this->layout = 'ajax';
}// else use controller default...or specify another layout to use here.
于 2013-06-14T14:00:36.860 回答