Ext.Direct表单集成

时间:2011-02-28 13:03:26

标签: extjs

我正在使用Ext.direct.RemotingProvider。在服务器端,我做了一些验证检查。 Respond以JSON格式发回。

如果在进行验证检查时发现任何错误,则字段成功= false,错误将包含错误。

我想知道,我如何反映我在服务器端(客户端)发现的错误。

在下面的链接中有一个我想要实现的例子。当客户端按“提交”时,表单中会出现错误消息,它是如何工作的?

Example

在我发布在底部的代码中,会发生以下情况: 在浏览器中有2个字段(名称,电子邮件)和2个按钮。 这些领域现在无关紧要。它们被用作傻瓜。

每次用户按下“添加”按钮时,都会在Ext.direct的callBuffer中添加一个新动作.RmotingProvider 当用户按下“应用”按钮时,所有操作都将被发送到路由器(MVC模型)并从那里发送到特定控制器。 (函数sfw.Direct.getProvider('sfwProvider')。combineAndSend()被触发)。

就目前而言,我故意无法响应并创建一个错误字段,就像我在Thread开头添加的示例链接一样。 我输入了错误字段{email =“已经存在”}。 但我认为形式没有影响..

我做错了什么?

代码:

appWiki.main_panel = new Ext.FormPanel({
        renderTo: 'extjs_panels_container'
        , id: 'appWiki_main_panel'
        , name: 'appWiki_main_panel'
        , defaultType: 'textfield'

        , items: [
            { 
            fieldLabel: 'Name',
            name: 'name'
            }
            ,{
            fieldLabel: 'Email',
            msgTarget: 'side',
            name: 'email'
        }]

        ,buttons:[
        {xtype: 'sfw.Button'
        , text: 'Add'
        , handler: function(){sfw.rule.store.api.readByRowId({data: {_ROWID_: 1}});}
        }
        ,{text: 'Submit'
        , handler: function(){
            appWiki.main_panel.getForm().submit({
            });
        }       
        }]

    ,api: {
        // The server-side must mark the submit handler as a 'formHandler'
        submit: sumbitAllRequests
    }   
    , load: function()
    {

        setTimeout("hide_loading_mask()",2000);
    }

    });

1 个答案:

答案 0 :(得分:0)

在JSON响应中,您需要以下结构

{ "result" : { "success": false, "errors": { "name of field" : "validation message" } }

"name of field"是您字段中的name配置选项,"validation message"是您要向用户显示的消息。

当您发送类似的响应时,ExtJS会处理其余的事情。

编辑:您可能还需要启用QuickTips:

Ext.QuickTips.init();

在声明表单之前添加该行

编辑2:另外,请确保您使用submit()上的BasicForm方法:

    buttons:[{
        text: 'Submit',
        handler: function(){
            basicInfo.getForm().submit({
                params: {
                    foo: 'bar',
                    uid: 34
                }
            });
        }
    }],