Envío de formulario externo síncrono (antiguo)

Necesito enviar la instancia de Ext.form.Panel de la manera anterior, sin nada de AJAX. Encontré algunas soluciones usando standardSubmit: true parámetro. Lo uso así:

Ext.define('MyForm', {
    id: 'myform',
    extend: 'Ext.form.Panel',
    url: '/some/url/'
    standardSubmit: true,
    ...
    buttons: {
        ...
        handler: function () {
            Ext.getCmp('myform').getForm().submit();
        }
    }
})

Hacer clic en el botón enviar conduce a No URL specified error. Intenté pasar diferentes combinaciones de parámetros en submit método, pero todo lo que obtengo son muchos errores extraños. ¿Alguien podría compartir un ejemplo práctico, por favor?

preguntado el 08 de noviembre de 11 a las 13:11

Encontré esta pregunta mientras buscaba un envío Ext.js sincrónico. standardSubmit actualizará toda la página. Ext.Ajax.request({..., async: false, ...}) era lo que estaba buscando. -

2 Respuestas

Aquí lo que dice la documentación para Ext.form.Panel

Si se subclasifica FormPanel, cualquier opción de configuración para BasicForm debe aplicarse a la propiedad initialConfig de FormPanel

Hasta ahora, el código enumerado anteriormente debería verse así

Ext.define('MyForm', {
    extend: 'Ext.form.Panel',
    ...    
    initComponent: function() {
        var me = this
        Ext.apply(me.initialConfig, {
            url: '/some/url',
            standardSubmit: true,
            method: 'GET'
        })
        ...
        me.buttons = {
            ...
            text: 'Submit',
            handler: function () {
                me.getForm().submit();
            }
        }
        me.callParent()
    }
})

Definitivamente no es obvio. Pero resuelve el problema.

respondido 09 nov., 11:10

¡Funciona! ¡Lo he buscado durante casi una semana! ¡El código de Radagast funciona! No hay otros códigos que no sean ext-407-gpl.

var login_form = Ext.create('Ext.form.Panel', {
    frame:true,
    title: '<?php echo $this->escape($this->message); ?>',
    url: '<?php echo $this->baseUrl ?>/auth/login',
    standardSubmit: true,
    bodyStyle:'padding:5px 5px 0',
    width: 350,
    fieldDefaults: {
        msgTarget: 'side',
        labelWidth: 75
    },
    defaultType: 'textfield',
    defaults: {
        anchor: '100%'
    },
items: [{
        fieldLabel: 'login',
        name: 'login_id',
        allowBlank:false
    },{
        fieldLabel: 'password',
        name: 'passwd',
        inputType: 'password'
    }],

    buttons: [{
        text: 'submit',
        type: 'submit',
        handler: function() { this.up('form').getForm().submit(); }
    }, {
        text: 'reset',
        type: 'reset',
        handler: function() { this.up('form').getForm().reset(); }
    }]
});

Respondido 10 Jul 12, 04:07

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.