Php 带CodeIgniter的Extjs:无法从网格中删除用户
我将遵循以下教程: 问题是它还没有结束。然而,到目前为止,它是使用sencha cmd开发extjs应用程序并使用CodeIgniter作为后端框架的最佳教程 我决定试着填补空白,猜测他要去哪里。我的create/read和update方法都工作得很好,但我似乎无法让delete工作 这是我的extjs商店:Php 带CodeIgniter的Extjs:无法从网格中删除用户,php,codeigniter,extjs,extjs4,extjs4.2,Php,Codeigniter,Extjs,Extjs4,Extjs4.2,我将遵循以下教程: 问题是它还没有结束。然而,到目前为止,它是使用sencha cmd开发extjs应用程序并使用CodeIgniter作为后端框架的最佳教程 我决定试着填补空白,猜测他要去哪里。我的create/read和update方法都工作得很好,但我似乎无法让delete工作 这是我的extjs商店: Ext.define('BugTracker.store.user.UserList', { extend: 'Ext.data.Store', requires: [ 'BugT
Ext.define('BugTracker.store.user.UserList', {
extend: 'Ext.data.Store',
requires: [
'BugTracker.model.user.UserList'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
model: 'BugTracker.model.user.UserList',
autoLoad: false,
remoteFilter: false,
remoteSort: false,
pageSize: 5,
sorters: {
property: 'username',
direction: 'asc'
},
proxy: {
type: 'rest',
actionMethods: {
create: 'POST',
read: 'GET',
update: 'POST',
destroy: 'POST'
},
api: {
create: 'index.php/user/new_user',
read: 'index.php/user/get_users',
update: 'index.php/user/update_user',
destroy: 'index.php/user/delete_user'
},
reader: {
type: 'json',
root: 'data'
},
writer: {
type: 'json',
writeAllFields: false,
allowSingle: false,
encode: true,
root: 'data'
}
}
}, cfg)]);
}
});
这是我的extjs控制器:
Ext.define('BugTracker.controller.user.UserAdmin', {
extend: 'Ext.app.Controller',
refs: [
{
ref:'userForm',
selector:'userform'
}
],
init: function(){
this.control({
'maintoolbar button[action=openUserAdminPanel]':{
click:function(){
var panel = Ext.widget('useradminpanel');
panel.show();
}
},
'userform button[action=saveUser]':{
click:function(button){
var form = button.up('form').getForm(),
values = form.getValues(),
store = Ext.getStore('user.UserList');
if (form.isValid()) {
switch (button.getText()){
case 'Save':
store.create(values);
break;
case 'Update':
var record = form.getRecord();
record.set(values);
store.update();
button.setText('Save');
}
this.LoadUserList();
this.ResetForm(form);
}
}
},
'userform button[action=deleteUser]':{
click:function(button){
var form = button.up('form').getForm(),
values = form.getValues(),
store = Ext.getStore('user.UserList');
if (form.isValid()) {
Ext.MessageBox.confirm('Delete',
'Are you sure you want to delete user "' + values.username + '"?',
function(button){
switch (button) {
case 'yes':
store.destroy(values.id);
break;
default:
break;
}
});
this.LoadUserList();
}
this.ResetForm(form);
}
},
'userlist':{
afterrender:this.LoadUserList,
cellclick:function(grid,td,cellIndex,record,tr,rowIndex,e,eOpts){
var form = this.getUserForm(),
button = form.down('button[action=saveUser]');
form.loadRecord(record);
button.setText('Update');
}
}
});
},
ResetForm:function(form){
form._record = null;
form.reset();
},
LoadUserList:function(){
var store = Ext.getStore('user.UserList');
store.removeAll();
store.load();
}
});
正如我单击delete按钮时看到的,它调用store.destroy,并向index.php/users/delete_user发送POST调用。但是,它正在发送一个空数组。我已经转储了values.id,它得到了正确的id。我已经尝试发送整个数组。无论我做什么,它都会发送一个空数组 所以我在后端转储“data”键以确定发送的内容。这是一个空数组。但是,我注意到,当我调用store.destrovalues时,发送了“id”,但它不是数据键的一部分。然后我开始解释这一点,删除操作很好
我之所以感到困惑,是因为我将代理的读写器设置为具有数据根。但是,我猜删除项不属于这两种情况,因此不会将其id放在“data”根中。感谢@stormdrain为我提供有关该问题的提示 是否需要更多的代码?我需要更多的细节吗?感谢您的帮助您是否验证了它是否通过inspector或类似的方式通过网络发送空数组?或者您只是在后端看到一个空阵列?