我已经在我的CakePHP应用程序中进行了编辑设置,除了一个问题外,它的效果非常好。当数据成功发布到数据库时,返回值包括已退出的'admin.ctp'布局。我尝试过$this->autoRender = false
和$this->layout = 'ajax'
这样的事情但没有成功。请我的代码如下:
jQuery代码
$('.setting_value').editable('/settings/ajax_edit',{
id : 'data[Setting][id]',
name : 'data[Setting][value]',
select: true,
type : 'text',
cancel : 'Cancel',
submit : 'Save',
tooltip : 'Click to edit the title',
indicator: '<img src="/img/admin/ajax-loader.gif">'
});
我的控制器功能
public function ajax_edit(){
// $this->autoRender = false; // this doesnt seem to work
// $this->layout = 'ajax' // this does not work as well
if ($this->request->data) {
$this->Setting->id = $this->request->data['Setting']['id'];
$this->Setting->saveField('value', $this->request->data['Setting']['value']);
$this->set('newvalue', $this->request->data['Setting']['value']);
}
}
同样,一切都很好,但是当它返回更改后的值时。
答案 0 :(得分:2)
经过一些尝试,我能够弄清楚。所以我按照以下内容更新了我的功能:
public function ajax_edit(){
$this->autoRender = false;
if ($this->request->data) {
$this->Setting->id = $this->request->data['Setting']['id'];
$this->Setting->saveField('value', $this->request->data['Setting']['value']);
return $this->request->data['Setting']['value'];
}
}
基本上,我必须设置autoRender = false并返回新值而不是使用视图文件来显示。它现在可以正常工作。