2012-03-13 17 views
11

używam następujący kod:Jak przekazać parametr do 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' 
    }) 
}); 

ale chcę przekazać 3 parametry do mojego pliku php. jak powinienem pracować? a także w jaki sposób mogę uzyskać w php pliku.

Odpowiedz

17

Istnieją dwie możliwości. Pierwszym z nich jest użycie przechowywać odnośniki baseParams config:

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

Drugim jest, aby wysłać je, gdy używasz load metody:

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

Uwaga: params zastąpi dowolny baseParams o tej samej nazwie

Tak więc, jeśli skonfigurujesz sklep z baseParams, jak w powyższym przykładzie, a następnie użyjesz load z parametrami, sklep poprosi o numer ...?param1=value1&param2=anotherValue.


... a także w jaki sposób mogę uzyskać w pliku php

jak zwykle zmiennej przekazanej za pomocą parametrów URL - używając $_GET:

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

@Sudhir Jeśli używasz ExtJS 4 będzie chciał skorzystać z opcji „extraParams” config i będzie go używać na serwerze proxy, a nie sam sklep . Z jaką wersją ExtJs pracujesz? – Justin

14

Używam tego i działa idealnie

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' 
    } 
} 
}); 

parametr przypisany jest do załadowania sklepu

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

Jeżeli wartość parametru może się zmienić (na przykład, jeśli pochodzi ona z innego pola formularza), a następnie najbardziej niezawodnym sposobem jest zastosowanie parametru proxy przed zdarzenie obciążenia za każdym razem ładuje przechowują, co następuje:

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