如何在Sencha Touch 2代理/型号/商店/其他设置CRUD方法?

时间:2012-03-03 23:20:09

标签: database model-view-controller proxy sencha-touch

我正在与合作伙伴一起构建Sencha Touch 2数据库应用。他在后端为我构建了大量的方法,语法如下:

  • 的index.php?R =显示/更新
  • 的index.php?R =显示/添加
  • 的index.php?R =显示/删除
  • 的index.php?R =人/添加

每个都希望与它一起发送POST。

我正在努力解决的问题是代理应该是什么样的 - 例如,有没有办法指定一个show proxy来映射/更新/添加和/删除它们相关的U / C / D操作?代理中只有一个url,那就是get动作(在这种情况下是getByUser)

我假设我想以某种方式将其他操作放入代理中 - 或者我只需要为每个操作添加一堆不同的代理(这似乎有点多余......)

Sencha文档暗示CRUD操作是内置于代理服务器,但我不知道他们的网址在何处或如何定义......

Ext.define('SMToolkit.store.Shows', {
extend: 'Ext.data.Store',

config: {
    model: 'SMToolkit.model.Show',
    autoLoad: true,
    sorters: 'name',
    grouper: {
        groupFn: function(record) {
            return record.get('type');
        }
    },
    proxy: {
        type: 'ajax',
        url : 'index.php?r=show/getByUser&username=FOO'
    }
}
});

使用如下所示的模型:

Ext.define('SMToolkit.model.Show', {
extend: 'Ext.data.Model',

config: {
    fields: [
        'id',
        'name',
        'opening',
        'closing',
        'rehearsal',
        'type',
        'availability'
    ]
}
});

1 个答案:

答案 0 :(得分:1)

如果每个操作都有特定的URL,ST2会为您提供API属性。您应该将代理更改为:

proxy: {
   type: 'ajax',
   api: {
     create : 'index.php?r=show/add',
     read   : 'index.php?r=show/read',
     update : 'index.php?r=show/update',
     destroy: 'index.php?r=show/delete'
   }
}

请注意我删除了url属性并添加了api属性。此外,要删除,您必须输入单词'destroy',因为在Javascript中,'delete'是保留字。