Как передать параметр в Ext.data.Store?

Я использую следующий код:

var genres1 = new Ext.data.Store({
    reader: new Ext.data.JsonReader({
        fields: ['pincode','place_name'],
        root: 'rows'
    }),
   proxy: new Ext.data.HttpProxy({
        url: 'pointalong.php',
        method: 'GET'
   })
});

но я хочу передать 3 параметра в файл php. как я должен работать? а также как я могу получить файл php.

Ответ 1

Есть две возможности. Первым из них является использование store baseParams config:

var genres1 = new Ext.data.Store({
    baseParams: {
        param1: 'value1',
        param2: 'value2'
    },
    // ...

Второй - отправить их, когда вы используете load метод:

genres1.load({params: {param2: 'anotherValue'}});

Примечание: params переопределит любые базовые пары с тем же именем

Итак, если вы настроите хранилище с baseParams как в примере выше, а затем используйте load с параметрами, которые магазин запросит ...?param1=value1&param2=anotherValue.


... а также как я могу получить в php файле

Как обычно, переменная передается через параметры URL-адреса - используя $_ GET:

$param1 = $_GET['param1'];

Ответ 2

Я использую это, и он отлично работает

Ext.define('store.odon.DiagnosticoStore', {
extend : 'Ext.data.Store',
model : 'model.odont.DiagnosticoModel',
    proxy: {
    type: 'ajax',
    api: {
        create: CONTEXT_PATH + '/mvc/odona/crear', 
        read: CONTEXT_PATH + '/mvc/odon/lista',
        update: CONTEXT_PATH + '/mvc/odon/update',
        destroy: CONTEXT_PATH + '/mvc/odon/delete'
    },
    reader: {
        type: 'json',
        root: 'diagnosticos',
        successProperty: 'success'
    },
    writer: {
        type: 'json',
        writeAllFields: true,
        encode: true,
        root: 'diagnosticos'
    }
}
});

параметр присваивается для загрузки хранилища

 var storeDiagnostico= getStore(); // Ext.create('store.odon.DiagnosticoStore');
        storeDiagnostico.getProxy().setExtraParam("idOdontologia", value);
        storeDiagnostico.load();

Ответ 3

Если значение параметра может измениться (например, если оно исходит из другого поля формы), самым надежным способом является применение параметра прокси до события загрузки при каждом загрузке магазина следующим образом:

 Ext.create('Ext.data.Store', {
    ...
    listeners:{
        beforeload: function(store){
            var filterText = Ext.getCmp('filterText').value;
            store.getProxy().setExtraParam("filterText", filterText);
        }
    },