Синхронная (по-старому) подача Ext.form.Panel - PullRequest
2 голосов
/ 08 ноября 2011

Мне нужно отправить экземпляр Ext.form.Panel по-старому, без каких-либо AJAX-файлов. Я нашел несколько решений с использованием параметра standardSubmit: true. Я использую это так:

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

Нажатие кнопки отправки приводит к ошибке No URL specified. Я пытался передать различные комбинации параметров в методе submit, но все, что я получаю, это много странных ошибок. Может кто-нибудь поделиться рабочим примером, пожалуйста?

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

Вот что говорит документация для Ext.form.Panel

При создании подкласса FormPanel любые параметры конфигурации для BasicForm должны применяться к свойству initialConfig FormPanel

Пока код, указанный выше, должен выглядеть следующим образом

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()
    }
})

Определенно не очевидно. Но это решает проблему.

0 голосов
/ 10 июля 2012

Работает!Я искал его почти неделю!Код Радагаста работает!Никаких других кодов, кроме 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(); }
    }]
});
...