Extjs - Dynamically generate fields in a FormPanel
Posted
by Benjamin
on Stack Overflow
See other posts from Stack Overflow
or by Benjamin
Published on 2010-05-21T03:27:40Z
Indexed on
2010/05/21
3:30 UTC
Read the original article
Hit count: 700
Hi all,
I've got a script that generates a form panel:
var form = new Ext.FormPanel({
id: 'form-exploit-zombie-'+zombie_ip,
formId: 'form-exploit-zombie-'+zombie_ip,
border: false,
labelWidth: 75,
formBind: true,
defaultType: 'textfield',
url: '/ui/modules/exploit/new',
autoHeight: true,
buttons:[{
text: 'Execute exploit',
handler: function() {
var form = Ext.getCmp('form-exploit-zombie-'+zombie_ip);
form.getForm().submit({
waitMsg: 'Running exploit ...',
success: function() {
Ext.beef.msg('Yeh!', 'Exploit sent to the zombie.')
},
failure: function() {
Ext.beef.msg('Ehhh!', 'An error occured while trying to send the exploit.')
}
});
}
}]
});
that same scripts then retrieves a json file from my server which defines how many input fields that form should contain. The script then adds those fields to the form:
Ext.each(inputs, function(input) {
var input_name;
var input_type = 'TextField';
var input_definition = new Array();
if(typeof input == 'string') {
input_name = input;
var field = new Ext.form.TextField({
id: 'form-zombie-'+zombie_ip+'-field-'+input_name,
fieldLabel: input_name,
name: 'txt_'+input_name,
width: 175,
allowBlank:false
});
form.add(field);
}
else if(typeof input == 'object') {
//input_name = array_key(input);
for(definition in input) {
if(typeof definition == 'string') {
}
}
} else {
return;
}
});
Finally, the form is added to the appropriate panel in my interface:
panel.add(form);
panel.doLayout();
The problem I have is: when I submit the form by clicking on the button, the http request sent to my server does not contain the fields added to the form. In other words, I'm not posting those fields to the server.
Anyone knows why and how I could fix that?
Thanks for your time.
© Stack Overflow or respective owner