// 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'); });