同步(旧方式)Ext.form.Panel提交

时间:2011-11-08 13:38:56

标签: extjs extjs4

我需要以旧方式提交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 个答案:

答案 0 :(得分:2)

这里是Ext.form.Panel的文档

  

如果继承FormPanel,则必须将BasicForm的任何配置选项应用于FormPanel的initialConfig属性

到目前为止,上面列出的代码应该如下所示

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

绝对不明显。但它解决了这个问题。

答案 1 :(得分:0)

有效!我已经找了差不多一个星期了! Radagast的代码有效!没有其他代码,但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(); }
    }]
});