2012-03-13 37 views
11

Estoy utilizando el código siguiente:Cómo pasar el parámetro 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' 
    }) 
}); 

pero yo quiero pasar 3 parámetros a mi archivo php. ¿Cómo debo procesar? y también cómo podría obtener el archivo php.

Respuesta

17

Hay dos posibilidades. La primera de ellas es el uso de tienda de baseParams config:

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

El segundo es para enviarlos cuando se utiliza load método:

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

Nota: params anularán cualquier baseParams del mismo nombre

Así que si configuró la tienda con baseParams como en el ejemplo anterior y luego usa load con params, la tienda solicitará ...?param1=value1&param2=anotherValue.


... y también ¿Cómo puedo obtener al archivo php

Como variables de costumbre pasó a través de los parámetros de URL - usando $_GET:

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

@Sudhir Si está utilizando ExtJs 4 que tendrá que usar la opción de configuración "extraParams" y que va a usar en el proxy, no la propia tienda . ¿Con qué versión de ExtJs trabajas? – Justin

14

utilizo esto y funciona perfectamente

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

el parámetro se asigna a cargar la tienda

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

Si el valor del parámetro se puede cambiar (por ejemplo, si se trata de otro campo de formulario), entonces la manera más confiable es aplicar el parámetro de proxy, antes de el evento de carga cada vez que las cargas de depósito, de la siguiente manera:

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