2012-08-13 33 views
6

Tengo:ExtJS - Formulario enviar código

win = desktop.createWindow({ 
    id: 'admin-win', 
    title: 'Add administration users', 
    width: 740, 
    height: 480, 
    iconCls: 'icon-grid', 
    animCollapse: false, 
    constrainHeader: true, 
    xtype: 'form', 
    bodyPadding: 15, 
    url: 'save-form.php', 
    items: [{ 
     xtype: 'textfield', 
     fieldLabel: 'Field', 
     name: 'theField' 
    }], 

    buttons: [{ 
     text: 'Submit', 
     handler: function() { 
      var form = this.up('form').getForm(); 
      if (form.isValid()) { 
       form.submit({ 
        success: function (form, action) { 
         Ext.Msg.alert('Success', action.result.message); 
        }, 
        failure: function (form, action) { 
         Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response'); 
        } 
       }); 
      } 
     } 
    }] 
}); 

y los botones no funcionan. Crea un error: this.up ('form') no está definido. ¿Cómo puedo llamar a getForm() en un código como ese?

ACTUALIZACIÓN: ¡Gracias por la respuesta realmente rápida! he modificado el código para mis necesidades, eso es todo, y funciona con el escritorio Ejemplo:

win = desktop.createWindow({ 
    id: 'admin-win', 
    title: 'Add administration users', 
    width: 740, 
    iconCls: 'icon-grid', 
    animCollapse: false, 
    constrainHeader: true, 
    items: [{ 
     xtype: 'form', 
     bodyPadding: 15, 
     url: 'save-form.php', 
     items: [{ 
      xtype: 'textfield', 
      fieldLabel: 'Field', 
      name: 'theField' 
     }], 

     buttons: [{ 
      text: 'Submit', 
      handler: function() { 
       var form = this.up('form').getForm(); 
       if (form.isValid()) { 
        this.up().up().submit({ 
         success: function (form, action) { 
          Ext.Msg.alert('Success', action.result.message); 
         }, 
         failure: function (form, action) { 
          Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response'); 
         } 
        }); 
       } 
      } 
     }] 
    }] 
}); 
+0

¿Es esta su código completo? ¿Qué desktop.createWindow hace? Pregunto esto porque parece que estás tratando de crear una ventana pero usando las opciones de Ext.form.Panel. – davidbuzatto

+0

Está basado en el Ejemplo de Escritorio ExtJS. Quiero crear una ventana solo con formulario. –

+0

¿Así que copia/pega este código? – davidbuzatto

Respuesta

5

Como ya he dicho, parece que tiene problemas con su código. Estás pasando opciones de Ext.form.Panel a Ext.window.Window (supongo que esto es el nombre del método al que llamas). Estoy escribiendo un ejemplo con una ventana para ti. Sólo un momento.

Está listo. Echar un vistazo:

Ext.create('Ext.window.Window', { 
    title: 'This is a Window with a Form', 
    height: 200, 
    width: 400, 
    layout: 'fit', 
    items: [{ // the form is an item of the window 
     id: 'admin-win', 
     title: 'Add administration users', 
     width: 740, 
     height: 480, 
     iconCls: 'icon-grid', 
     animCollapse: false, 
     constrainHeader: true, 
     xtype: 'form', 
     bodyPadding: 15, 
     url: 'save-form.php', 
     items: [{ 
      xtype: 'textfield', 
      fieldLabel: 'Field', 
      name: 'theField', 
      allowBlank: false 
     }], 
     buttons: [{ 
      text: 'Submit', 
      handler: function() { 
       var form = this.up('form').getForm(); 
       if (form.isValid()) { 
        form.submit({ 
         success: function(form, action) { 
          Ext.Msg.alert('Success', action.result.message); 
         }, 
         failure: function(form, action) { 
          Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response'); 
         } 
        }); 
       } else { 
        Ext.Msg.alert("Error!", "Your form is invalid!"); 
       } 
      } 
     }] 
    }] 
}).show(); 

jsFiddle: http://jsfiddle.net/davidbuzatto/vWmmD/

+0

Gracias :-) Actualicé mi primera publicación, porque no tengo permiso para responder mis temas ;-) Tengo que modificar tu código para mis necesidades. –

+0

¡De nada! Como dije, de hecho estabas pasando las opciones de Ext.form.Panel a Ext.window.Window :) ExtJS es muy agradable. Eche un vistazo a su documentación porque es muy completa. – davidbuzatto