2012-03-13 3 views
11

Я использую следующий код:Как передать параметр в 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.

ответ

17

Есть две возможности. Первый из них заключается в использовании магазину baseParams конфигурации:

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

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

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

Примечание: PARAMS перекроет любой baseParams с таким же названием

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


... а также как бы я получить в PHP файл

Как обычно переменная передается через параметры URL - с помощью $_GET:

$param1 = $_GET['param1']; 
+5

@Sudhir Если вы используете ExtJS 4 вы хотите использовать «extraParams» вариант конфигурации, и вы будете использовать его на прокси-сервер, а не сам магазин , С какой версией ExtJ вы работаете? – Justin

14

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

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(); 
4

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

Ext.create('Ext.data.Store', { 
    ... 
    listeners:{ 
     beforeload: function(store){ 
      var filterText = Ext.getCmp('filterText').value; 
      store.getProxy().setExtraParam("filterText", filterText); 
     } 
    }, 
Смежные вопросы