Передача данных в 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, время: 15:24. |