Передача данных в Multiple Selection
В демке за сайте сенча
http://dev.sencha.com/deploy/ext-4.0...rm/combos.html "Multiple Selection" (3-й сверху блок) Применен код: // Define the model for a State Ext.regModel('State', { fields: [ {type: 'string', name: 'abbr'}, {type: 'string', name: 'name'}, {type: 'string', name: 'slogan'} ] }); // The data store holding the states var store = Ext.create('Ext.data.Store', { model: 'State', data: states }); // ComboBox with multiple selection enabled var multiCombo = Ext.create('Ext.form.field.ComboBox', { fieldLabel: 'Select multiple states', renderTo: 'multiSelectCombo', multiSelect: true, displayField: 'name', width: 500, labelWidth: 130, store: store, queryMode: 'local' }); Вставил этот комбобокс в свою форму, окрываю фаербаг, выбираю 5 значений в этом комбобоксе, запостил форму - фаербаг пишет что передаются такие вот параметры: ..name=10&name=20&name=30&name=40&name=50... Сответственно в PHP скрипте, в который постится форма принимая переменную "name" вижу только последнее значение name=50. Как заставить EXTJS запостить переменную "name" как массив? Или как вообще принять такое на стороне PHP...? 4 часа поиска решения по демкам, инглицкому форуму сенча и експерименты с документацией не дал никакого результата... Подскажите, кто в теме... куда хоть думать надо... Заранее благодарен |
Думаю стоит обратить внимание на Ext.encode и Ext.decode.
отлови момент передачи и перед ней преобразуй в json (или объект), что бы потом на стороне пхп преобразовать в массив и его уже обработать. Кстати, ты его че, через форму отправляешь что ли?? Попробуй так: Ext.Ajax.request({ waitMsg: 'Секундочку...', url: 'get.php', success: function (response){ Ext.data.StoreManager.lookup('favStore').loadPage(1); }, failure: function (response){ Ext.MessageBox.alert('Ошибка','Не могу соединиться с базой'); }, params: { delArray:Ext.encode(ids), // Здесь у меня массив id для удаления cmd:'deleteJobs' } }); |
posta, благодарю за помошь, покрутил Ext.encode и Ext.decode ...решенияя не нашел.
Ext.Ajax.request мне не подойдет.. там именно форма с 20 полями, которую надо заполнить. Собрал демку из моей ситуации: Ext.define('SOME.xmlerror', { extend: 'Ext.data.Model', fields: ['id', 'msg'] }); var SOME_form = Ext.create('Ext.form.Panel', { bodyPadding: 2, waitMsgTarget: true, fieldDefaults: { labelAlign: 'left', labelWidth: 210, msgTarget: 'side' }, // configure how to read the XML errors errorReader: Ext.create('Ext.data.reader.Xml', { model: 'SOME.xmlerror', record : 'field', successProperty: '@success' }),items: [{ xtype: 'fieldset', title: 'Проверка Multiple Selection', defaultType: 'textfield', defaults: { width: 540 }, items: [{ xtype: 'combobox', name: 'SOME_region', valueField: 'abbr', triggerAction: 'ALL', fieldLabel: 'Регионы', multiSelect: true, displayField: 'state', store: Ext.create('Ext.data.Store', { fields : ['abbr', 'state'], data : [ {abbr : '10', state: 'Москва'},{abbr : '20', state: 'Дальневосточный ФО России'},{abbr : '30', state: 'Приволжский ФО России'},{abbr : '40', state: 'Северо-Западный ФО России'},{abbr : '50', state: 'Сибирский ФО России'},{abbr : '60', state: 'Уральский ФО России'},{abbr : '70', state: 'Центральный ФО России'},{abbr : '80', state: 'Южный ФО России'},{abbr : '90', state: 'Северокавказский ФО России'},{abbr : '100', state: 'БЕЛАРУСЬ'},{abbr : '110', state: 'Другие регионы'}, ] }), queryMode: 'local' },{ fieldLabel: 'Какойто инпут', name: 'SOME_input', inputType: 'text', maxLength: '100' } ]}], buttons: [{ text: 'Запостить', disabled: true, formBind: true, handler: function(){ this.up('form').getForm().submit({ url: 'check_errors.php', submitEmptyText: false, waitMsg: 'Проверка данных...', success: function(){ Ext.Msg.alert('Сообщение', 'Всё успешно'); } }); } }] }); Создается панель, которую я печатаю в нужное место на странице. Форма постит 2 переменных SOME_input и SOME_region в check_errors.php, риадер слушает ответ в XML формате по модели SOME.xmlerror, если ошибок нет - печатает Ext.Msg.alert. Заполняю форму и нажимаю запостить - в фаербаге содержимое поста такое: SOME_region=10&SOME_region=20&SOME_region=50&SOME_ region=70&SOME_input=test Думаю там надо чтото вписать в конфигуратор комбобокса, для того чтоб он передал данные нормально, а не перечислением выбранного.... но вот какой?? |
Часовой пояс GMT +3, время: 18:22. |