php - Extjs with CodeIgniter: Can't delete a user from a grid -
i following following tutorial:
problem doesn't finish. however, point goes best tutorial around developing extjs app sencha cmd , using codeigniter backend framework.
i decided try fill in gaps , guess @ going. got create /read , update methods working nicely can't seem delete work.
here extjs store:
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)]); } });
and here extjs controller:
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 sure want 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(); } });
as can see when click on delete button calls store.destroy , sends post call index.php/users/delete_user. however, sending empty array. have dumped out values.id , comes right id. have tried sending entire array. no matter sends empty array.
so dumping out 'data' key on backend determine being sent. coming empty array. however, noticed when called store.destroy(values)
'id' sent not part of data key. proceeded account , deletion works fine.
the reason confused because set reader , writer of proxy have root of "data". however, guess deleting items not fall under either of these , therefore not put id inside of 'data' root. thank @stormdrain giving me hint towards issue!
Comments
Post a Comment