2010-05-21 23 views
5

bir FormPanel alanları oluşturmak:Extjs - Dinamik olarak bir biçim paneli üreten bir senaryo var

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

aynı komut o zaman kaç girişini tanımlayan sunucumdan bir json dosyası alır form gerektiği alanlar içerirler. Daha sonra komut dosyası forma o alanları ekler:

Son olarak, biçim benim arayüzde uygun paneline eklenir
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; 
    } 
}); 

: Ben sorundur

panel.add(form); 
panel.doLayout(); 

: Ben formu ile gönderdiğinde Düğmeye tıklandığında, sunucuma gönderilen http isteği, forma eklenen alanları içermiyor. Diğer bir deyişle, bu alanları sunucuya yayınlamıyorum.

Bunu neden ve nasıl çözebileceğimi herkes biliyor mu?

cevap

9

Kişisel sorundan ne alabilirim buradadır:

id: 'form-exploit-zombie-'+zombie_ip, 
formId: 'form-exploit-zombie-'+zombie_ip, 

ne yaptığını sen id niteliğini ayarlayarak olmasıdır form paneli ve formun id özniteliği (form etiketi) aynı değere. Yani aynı kimliğe sahip iki öğeniz var ve bu yanlış.

Sadece bu çizgiyi

formId: 'form-exploit-zombie-'+zombie_ip, 

kaldırmak ve ince olmalıdır.

+0

Seni seviyorum. Teşekkürler. – Benjamin

+0

@Benjamin: Sorun değil. –

0

Form değerleri için HTTP Request parametresini kontrol ettiniz mi?

Sunucu tarafı PHP'deyse, herhangi bir alan adını geçerek yanıttan ne alırsınız? girişinizi adının biri "xyz" olsaydı Örneğin,

$_POST[ 'txt_xyz' ] 
+0

evet bunu kontrol ettim. – Benjamin