2012-03-13 23 views
11

Sto usando il codice seguente:Come passare il parametro a 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' 
    }) 
}); 

ma voglio passare 3 parametri al mio file php. come devo procedere? e anche come potrei ottenere al file php.

risposta

17

Ci sono due possibilità. Il primo è quello di utilizzare negozio baseParams config:

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

Il secondo è quello di inviare loro quando si utilizza load metodo:

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

Nota: params sostituiranno qualsiasi baseParams con lo stesso nome

Quindi, se si imposta l'archivio con baseParams come nell'esempio sopra e quindi si utilizza load con parametri, lo store richiederà ...?param1=value1&param2=anotherValue.


... e anche come potrei arrivare al file php

Come al solito variabile passata attraverso i parametri URL - utilizzando $_GET:

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

@Sudhir Se si utilizza ExtJs 4 si vorrà utilizzare l'opzione di configurazione "extraParams" e si userà sul proxy, non il negozio stesso . Con quale versione di ExtJ stai lavorando? – Justin

14

Io uso questo e funziona perfettamente

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

il parametro è assegnato a caricare il negozio

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

Se il valore del parametro può cambiare (ad esempio, se proviene da un altro campo modulo), allora il modo più affidabile è quello di applicare il parametro proxy prima l'evento di caricamento ogni volta che i carichi dei negozi, come segue:

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