Extjs - Динамично генерируйте поля в FormPanel

У меня есть сценарий, который генерирует панель формы:

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

те же самые сценарии затем получают json файл с моего сервера, который определяет, сколько полей ввода, которые должна содержать форма. Сценарий затем добавляет те поля к форме:

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

Наконец, форма добавляется к соответствующей панели в моем интерфейсе:

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

Проблема, которую я имею: когда я отправляю форму путем нажатия на кнопку, запрос HTTP, отправленный на мой сервер, не содержит поля, добавленные к форме. Другими словами, я не отправляю те поля на сервер.

Кто-либо знает, почему и как я мог зафиксировать это?

5
задан Darin Kolev 22 July 2013 в 19:20
поделиться

2 ответа

Ваша проблема здесь:

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

вы делаете то, что устанавливаете для атрибута id панели формы и атрибута id формы (тега формы) одно и то же значение. Это означает, что у вас есть два элемента с одинаковым идентификатором, и это неверно.

Просто удалите эту строку

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

, и все будет в порядке.

9
ответ дан 14 December 2019 в 01:03
поделиться

Проверяли ли вы параметр HTTP Request для значений формы?

Если вы работаете на стороне сервера на PHP, что вы получаете в ответ, передавая любое имя поля? Например, если имя одного из вводимых полей было "xyz", что вы получите в ответ на

$_POST[ 'txt_xyz' ]
0
ответ дан 14 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: