Ayuda con formularios
Buenas noches
Estoy realizando una aplicacion con Extjsn Y se me han presentado varios incovenientes. Realice un formulario para ingresar datos a una base de datos y por tener muchos campos lo organice con pestañas pero no me guarda la informacion. Por otra parte no he podido con el login de la aplicacion, no se si estoy comentiendo errores de sitaxis o que sucede. Agradeceria mucho la colaboracion
Cordial saludo
Para enviar información de varios paneles necesitas recolectarla si creaste varios formularios, si solamente creaste un solo formulario y luego le agregaste un TabPanel con campos simplemente harías el submit y automáticamente te coje todos los campos.
Saludos
Muchas Gracias por tu respuesta. Adjunto el formulario para ver si me puedes colaborar ya que he revisado y no encuentro la solucion <!-- s:( --><!-- s:( -->
Ext.ns('com.quizzpot.tutorial'); Ext.BLANK_IMAGE_URL = '../../Ext/resources/images/default/s.gif'; com.quizzpot.tutorial.SubmitFormTutorial = { init: function(){ this.form = new Ext.form.FormPanel({ //standardSubmit: true, // traditional submit url: 'guardar.php', //labelAlign: 'top', border:false, title: 'Informacion del cliente', bodyStyle:'padding:5px', width: 600, // INICIO CON LA PRIMERA COLUMNA items: [{ layout:'column', border:false, items:[{ columnWidth:.5, layout: 'form', border:false, // CAJA TEXTO CEDULA items: [{ xtype:'numberfield', fieldLabel:'Cedula', name:'cedula', allowBlank:false, anchor:'95%'}, // COMBO DEPARTAMENTOS {xtype:'combo', name: 'cod_depa', fieldLabel:'Depto Exp', allowBlank:false, emptyText: 'Seleccione el departamento...', //width:100, //editable :true,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'cod_depa',//verdadero valor del combo displayField : 'nom_depa',//valor mostrado al usuario hiddenName : 'cod_depa',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_dep_exp.php', //la pagina de la cual tomaras los datos pa cargar fields: ['cod_depa', 'nom_depa'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'cod_depa', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true}), // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente anchor:'95%'}, // CAJA TEXTO NOMBRE {xtype:'textfield', fieldLabel: 'Nombre', name: 'nombre', anchor:'95%'}]}, // AQUI FINALIZO LA PRIMERA COLUMNA //Y SE INICIA LA SEGUNDA COLUMNA { columnWidth:.5, layout: 'form', border:false, // CALENDARIO FECHA EXPEDIXION items: [{ xtype:'datefield', layout: 'column', fieldLabel: 'Fec Expedicion', name: 'fecha_exp', emptyText:'Insertar fecha...', format:'Y-m-d', editable :false, allowBlank:false, anchor:'95%'}, // COMBO CIUDAD {xtype:'combo', //id :'idcentral', name: 'cod_ciudad', fieldLabel:'Mun Expedicion', allowBlank:false, emptyText: 'Seleccione el Municipio...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'cod_ciudad',//verdadero valor del combo displayField : 'nom_ciudad',//valor mostrado al usuario hiddenName : 'cod_ciudad',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_mun_exp.php', //la pagina de la cual tomaras los datos pa cargar fields: ['cod_ciudad', 'nom_ciudad'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'cod_ciudad', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true }),// si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente anchor:'95%'}, // CAJA TEXTO APELLIDO {xtype:'textfield', fieldLabel: 'Apellido', name: 'apellido', anchor:'95%'}] }] },// CIERRO EL PRIMER FORMULARIO // INICIO CON LOS FORMULARIOS EN PESTAÑAS {xtype:'tabpanel', plain:true, activeTab: 0, height:320, /* By turning off deferred rendering we are guaranteeing that the form fields within tabs that are not activated will still be rendered. This is often important when creating multi-tabbed forms. */ deferredRender: false, defaults:{bodyStyle:'padding:10px'}, //INICIO CON LOS ELEMENTOS DE CADA PESTAÑA // PESTAÑA UBICACION items:[{ title:'Ubicacion', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [{ fieldLabel: 'Direccion', name: 'direccion', allowBlank:false}, {fieldLabel: 'Celular', name: 'celular'}, {fieldLabel: 'Telefono', name: 'telefono'}, {xtype:'combo', //id :'idcentral', name: 'cod_depa2', fieldLabel:'Departamento', allowBlank:false, emptyText: 'Seleccione el departamento...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'cod_depa',//verdadero valor del combo displayField : 'nom_depa',//valor mostrado al usuario hiddenName : 'cod_depa',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_dep_exp.php', //la pagina de la cual tomaras los datos pa cargar fields: ['cod_depa', 'nom_depa'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'cod_depa', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true })// si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente /*listeners : { select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item } }*/ }, {xtype:'combo', //id :'idcentral', name: 'cod_ciudad2', fieldLabel:'Municipio', allowBlank:false, emptyText: 'Seleccione el Municipio...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'cod_ciudad',//verdadero valor del combo displayField : 'nom_ciudad',//valor mostrado al usuario hiddenName : 'cod_ciudad',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_mun_exp.php', //la pagina de la cual tomaras los datos pa cargar fields: ['cod_ciudad', 'nom_ciudad'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'cod_ciudad', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true }) },// si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente {fieldLabel: 'Email', name: 'email', vtype:'usuario@tucorreo.com'}]}, {title:'Datos Entidad', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [ { xtype:'combo', //id :'idcentral', name: 'cod_entidad', fieldLabel:'Entidad', allowBlank:false, emptyText: 'Seleccione...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'cod_entidad',//verdadero valor del combo displayField : 'nom_entidad',//valor mostrado al usuario hiddenName : 'cod_entidad',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_entidad.php', //la pagina de la cual tomaras los datos pa cargar fields: ['cod_entidad', 'nom_entidad'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'cod_entidad', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) /*listeners : { select : function(){ //qui puedes colocar algo que se ejucute cuando el usuario seleccione un item } }*/ }]}, {title:'Otros', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [{xtype:'combo', //id :'idcentral', name: 'id_sexo', fieldLabel:'Sexo', allowBlank:false, emptyText: 'Seleccione el sexo...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'id_sexo',//verdadero valor del combo displayField : 'desc_sexo',//valor mostrado al usuario hiddenName : 'id_sexo',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_sexo.php', //la pagina de la cual tomaras los datos pa cargar fields: ['id_sexo', 'desc_sexo'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'id_sexo', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente }) }, {xtype:'combo', //id :'idcentral', name: 'id_est_civil', fieldLabel:'Estado Civil', allowBlank:false, emptyText: 'Seleccione...', //width:100, editable :false,//si deseas que no puedan escribir en le combo, solo seleccionar valueField : 'id_est_civil',//verdadero valor del combo displayField : 'est_civil',//valor mostrado al usuario hiddenName : 'id_est_civil',//si deseas enviar a tu archivo php el valor oculto debes configurar esta propiedad, sino te enviara el valor desplegado al usuario mode: 'remote',//para que no haga que el store se recargue cada vez que se despliega el combo debemos configurar esta propiedad asi triggerAction: 'all',//si no configuras esta propiedad cuando selecciones un valor del listado desaparecerán los demás como una especie de filtro store: new Ext.data.JsonStore({//he aqui el store url : 'combo_est_civ.php', //la pagina de la cual tomaras los datos pa cargar fields: ['id_est_civil', 'est_civil'],//campos de mi almacen root: 'datos',//este valor nos servirá para tomar los datos que regresemos desde la BD id: 'id_est_civil', //cual de los campos 'fields' será el utilizado como identificador único dentro del store autoLoad :true // si deseas que tu combo se cargue apenas se muestre, sino tendrás que hacerlo manualmente })}, {xtype:'datefield', fieldLabel: 'Fecha Nacimiento', name: 'fecha_nac', emptyText:'Insertar fecha...', format:'Y-m-d', editable :false, allowBlank:false}, {fieldLabel: 'Nombre Conyuge', name: 'nombre_conyuge'}, {fieldLabel: 'Telefono Conyuge', name: 'telefono_conyuge'}]}, {title:'Referencia 1', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [{ fieldLabel: 'Nombre', name: 'nom_ref1', allowBlank:false }, { fieldLabel: 'Telefono', name: 'tel_ref1', allowBlank:false }, { fieldLabel: 'Direccion', name: 'dir_ref1', allowBlank:false },{ fieldLabel: 'Parentesco', name: 'paren_ref1', allowBlank:false }] }, { title:'Referencia 2', layout:'form', defaults: {width: 230}, defaultType: 'textfield', items: [{ fieldLabel: 'Nombre', name: 'nom_ref2', allowBlank:false }, { fieldLabel: 'Telefono', name: 'tel_ref2', allowBlank:false }, { fieldLabel: 'Direccion', name: 'dir_ref2', allowBlank:false },{ fieldLabel: 'Parentesco', name: 'paren_ref2', allowBlank:false }] } ] }] }); this.win = new Ext.Window({ id:'mywin', title: 'Nuevo Cliente', bodyStyle: 'padding:10px;background-color:#fff;', width:700, maximizable:true, items:[this.form], buttons: [{text:'Guardar',handler:this.sendData,scope:this},{text:'Limpiar',handler:this.limpiar,scope:this}] }); this.win.show(); }, limpiar: function(){ this.form.getForm().reset() }, sendData: function(){ //submit the form var mask = new Ext.LoadMask(Ext.get('mywin'), {msg:'Guardando. Un momento por favor...'}); mask.show(); this.form.getForm().submit({ method: 'POST', params: { extraParam: 'enviar' }, success: function(form,action){ mask.hide(); respuesta = Ext.util.JSON.decode(action.response.responseText); Ext.MessageBox.show({ title : 'ingreso', msg : respuesta.grabado.razon, buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.INFO }); form.reset() }, failure: function(form,action){ mask.hide(); if(action.failureType == 'server'){ respuesta = Ext.util.JSON.decode(action.response.responseText); Ext.MessageBox.show({ title : 'Error', msg : respuesta.errors.razon, buttons : Ext.MessageBox.OK, icon : Ext.MessageBox.ERROR }); } } }); } } Ext.onReady(com.quizzpot.tutorial.SubmitFormTutorial.init,com.quizzpot.tutorial.SubmitFormTutorial); /* Ext.onReady(function() { Ext.QuickTips.init(); this.form = new Ext.form.FormPanel({ //standardSubmit: true, // traditional submit url: 'submitform.php', border:false, labelWidth: 150, defaults: { xtype:'textfield', width: 250 }, items:[ { xtype:'numberfield', fieldLabel:'Codigo usuario', name:'idusuario', allowBlank:false }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 15 }, { fieldLabel:'Nombre', name:'nombre_usuario',// este es el valor para la programacion allowBlank:false }, { fieldLabel:'apellido', name:'apellido_usuario',// este es el valor para la programacion allowBlank:false }, { xtype:'numberfield', fieldLabel:'telefono', name:'telefono',// este es el valor para la programacion allowBlank:false }, { fieldLabel:'Correo electronico', name:'correo', emptyText:'correo@abasto.com', allowBlank:false }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 25 }, { xtype:'panel', title:'Datos Usuario del Sistema', width: 250, border:false }, { xtype:'spacer',//esto me da espacio entre lineas width: 250, height: 15 }, { fieldLabel:'Usuario', name:'nick', allowBlank:false }, { inputType: 'password', fieldLabel:'Contraseña', name:'nick', allowBlank:false }, { xtype:'combo', fieldLabel:'Central a administrar', name:'Central', allowBlank:false, editable: false }, { xtype:'combo', fieldLabel:'Perfil', name:'acceso', allowBlank:false, editable: false } ] }); this.win = new Ext.Window({ id:'mywin', title: 'Nuevo Usuario', bodyStyle: 'padding:10px;background-color:#fff;', width:300, maximized: true, layout:'fit', //mazimizable:true, height:270, items:[this.form], buttons: [ { text:'Guardar' }, { text:'Cancelar' } ] }); this.win.show(); });
si tus componentes están dentro de un form no deberías tener problemas, ahora bien , yo no configuro la propiedad "name" del componente me basta con el id, en el caso de los combo uso hiddenId. importante es que uses herramientas como el firebug y el firephp para interceptar donde están tus errores, si en lo que envías o como los capturas al lado del servidor. no dudes en preguntar si estas perdid@
¿Conoces a alguien que pueda responder esta pregunta? Comparte el link en Twitter o Facebook
Es necesario registrarse para poder participar en el foro! Si ya tienes una cuenta puedes entrar y comentar en este foro.