extjs4 store set extraParam动态不起作用

时间:2014-09-17 12:32:04

标签: php extjs extjs4.2

美好的一天。我最近遇到了一个令人不安的错误,我不知道它来自何处或是如何产生的。

我有一个表单,我希望在按下按钮时将数据保存到数据库,由控制器处理。这就是我在控制器中所做的事情:

var personStore = Ext.getStore('personBaseDetails');
var caStore = Ext.getStore('creditApplication');
var form = button.up('form').getForm();
var userId = personStore.first().get('ID');

//use this to update
if(caStore.count() < 1){
    var creditApplication = Ext.ModelManager.create({
    }, 'appName.model.creditApplicationModel');
    caStore.add(creditApplication);
}

var record = caStore.first();
form.updateRecord(record);

console.log("user id to be edited is = " + userId);
console.log("caStore count = " + caStore.getCount());

caStore.getProxy().extraParams = {
    selectedUserID: userId
};

// caStore.load();
caStore.sync({
    success: function(batch) {
        console.log(batch.operations[0].request.scope.reader.jsonData['message']);
    },

    failure: function(batch) {
        console.log(batch.operations[0].request.scope.reader.jsonData['message']);
    }

});

在这里,我设置了商店额外的参数,以便在php代码查询中使用它。但是,我遇到的问题是,当我在PHP代码中获得selectedUserID时,我似乎无法获得额外的参数。如果我注释掉if(isset($_GET['selectedUserID'])){ .... },则查询有效(尽管这些值现在是硬编码的)。

以下是我的商店的样子:

Ext.define('app.store.creditApplication', {
    extend: 'Ext.data.Store',

    requires: [
        'app.model.creditApplicationModel',
        'Ext.data.proxy.Ajax',
        'Ext.data.reader.Json',
        'Ext.data.writer.Json'
    ],

    constructor: function(cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({
            autoLoad: false,
            model: 'app.model.creditApplicationModel',
            storeId: 'creditApplication',
            clearOnPageLoad: false,
            proxy: {
                type: 'ajax',
                api: {
                    create: 'data/person/creditApplication/createCreditApplication.php',
                    read: 'data/person/creditApplication/readCreditApplication.php',
                    update: 'data/person/creditApplication/updateCreditApplication.php'
                },
                url: '',
                reader: {
                    type: 'json',
                    root: 'data'
                },
                writer: {
                    type: 'json',
                    encode: true,
                    root: 'data'
                }
            }
        }, cfg)]);
    }
});

现在我傻眼了,因为我有另外一个代码,就像我在控制器中设置extraParam并且php代码能够接收和读取它一样。请注意,我的两个商店都没有extraParam属性。

我一直坚持这个问题而且我不知道如何解决这个问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

商店没有extraParam,s代理。您可以使用以下命令进行设置:

store.getProxy()。setExtraParam(name, value)