The source code

    // This example illustrates how to load a FormPanel or BasicForm through Ext.Direct.

    Ext.onReady(function(){
        // Notice that Direct requests will batch together if they occur
        // within the enableBuffer delay period (in milliseconds).
        // Slow the buffering down from the default of 10ms to 100ms
        Ext.app.REMOTING_API.enableBuffer = 100;
        Ext.Direct.addProvider(Ext.app.REMOTING_API);

        // provide feedback for any errors
        Ext.QuickTips.init();

        var basicInfo = new Ext.form.FormPanel({
            // configs for FormPanel
            title: 'Basic Information',
            border: false,
            padding: 10,
            buttons:[{
                text: 'Submit',
                handler: function(){
                    basicInfo.getForm().submit({
                        params: {
                            foo: 'bar',
                            uid: 34
                        }
                    });
                }
            }],

            // configs apply to child items
            defaults: {anchor: '-20'}, // provide some room on right for validation errors
            defaultType: 'textfield',
            items: [{
                fieldLabel: 'Name',
                name: 'name'
            },{
                fieldLabel: 'Email',
                msgTarget: 'side',
                name: 'email'
            },{
                fieldLabel: 'Company',
                name: 'company'
            }],

            // configs for BasicForm
            api: {
                // The server-side method to call for load() requests
                load: Profile.getBasicInfo,
                // The server-side must mark the submit handler as a 'formHandler'
                submit: Profile.updateBasicInfo
            },
            // specify the order for the passed params
            paramOrder: ['uid', 'foo']
        });

        var phoneInfo = new Ext.form.FormPanel({
            title: 'Phone Numbers',
            border: false,
            api: {
                load: Profile.getPhoneInfo
            },
            padding: 10,
            paramOrder: ['uid'],
            defaultType: 'textfield',
            defaults: {anchor: '100%'},
            items: [{
                fieldLabel: 'Office',
                name: 'office'
            },{
                fieldLabel: 'Cell',
                name: 'cell'
            },{
                fieldLabel: 'Home',
                name: 'home'
            }]
        });

         var locationInfo = new Ext.form.FormPanel({
            title: 'Location Information',
            border: false,
            padding: 10,
            api: {
                load: Profile.getLocationInfo
            },
            paramOrder: ['uid'],
            defaultType: 'textfield',
            defaults: {anchor: '100%'},
            items: [{
                fieldLabel: 'Street',
                name: 'street'
            },{
                fieldLabel: 'City',
                name: 'city'
            },{
                fieldLabel: 'State',
                name: 'state'
            },{
                fieldLabel: 'Zip',
                name: 'zip'
            }]
        });

         var accordion = new Ext.Panel({
            layout: 'accordion',
            renderTo: Ext.getBody(),
            title: 'My Profile',
            width: 300,
            height: 240,
            items: [basicInfo, phoneInfo, locationInfo]
        });

        // load the forms (notice the load requests will get batched together)
        basicInfo.getForm().load({
            // pass 2 arguments to server side getBasicInfo method (len=2)
            params: {
                foo: 'bar',
                uid: 34
            }
        });

        phoneInfo.getForm().load({
            params: {
                uid: 5
            }
        });

        // defer this request just to simulate the request not getting batched
        // since it exceeds to configured buffer
        (function(){
            locationInfo.getForm().load({
                params: {
                    uid: 5
                }
            });
        }).defer(200);

        // rpc call
        TestAction.doEcho('sample');

    });