Поле ComboBox товара minishop2
Доброго времени суток всем!
Помогите с синтаксисом ext js. Через плагин товара по офф. инструкции добавляю поля для товаров. Обычные текстовые поля и minishop2-combo-autocomplete поля работают.
Помогите с синтаксисом ext js. Через плагин товара по офф. инструкции добавляю поля для товаров. Обычные текстовые поля и minishop2-combo-autocomplete поля работают.
level: {
xtype: 'minishop2-combo-autocomplete',
description: '<b>[[+level]]</b><br />' + _('ms2_product_level_help')
},
Но мне нужно сделать поле с обычным выпадающим списком select с несколькими опциями. Для этой цели подходит MODx.combo.ComboBox, читал мануал docs.sencha.com/extjs/3.4.0/#!/api/Ext.form.ComboBox, но как адаптировать пример под мой плагин, понять пока не получилось — отличается синтаксис. Если у кого завалялся кусок кода реализованным комбобоксом, прошу поделиться. Комментарии: 5
miniShop2.plugin.Level = {
getFields: function(config) {
return {
level: {xtype: 'bla-bla-bla', description: '<b>[[+level]]</b><br />'+_('ms2_product_level_help')}
}
}
};
miniShop2.combo.Level = function (config) {
config = config || {};
Ext.applyIf(config, {
store: new Ext.data.ArrayStore({
id: 0
,fields: ['level','display']
,data: [
['0', '0'], // первое значение пишется в базу, второе выводится на экран
['1', '1']
]
}),
mode: 'local',
displayField: 'display',
valueField: 'level',
triggerAction: 'all',
editable: false,
selectOnFocus: false,
preventRender: true,
forceSelection: true,
enableKeyEvents: true
});
miniShop2.combo.Level.superclass.constructor.call(this, config);
};
Ext.extend(miniShop2.combo.Level,MODx.combo.ComboBox);
Ext.reg('bla-bla-bla',miniShop2.combo.Level);
Вместо bla-bla-bla можешь указать свой xtypeПроверяй.
Всё отлично работает, спасибо огромное!
Подскажите, пожалуйста, как сделать, чтобы массив data (значения для выпадающего списка) брался из системной настройки MODX?
Для этого процессор должен вернуть требуемый массив, например этот код вернёт список всех чанков:
miniShop2.combo.Level = function (config) {
config = config || {};
Ext.applyIf(config, {
name: 'chunk',
hiddenName: config.name || 'chunk',
displayField: 'name',
valueField: 'id',
editable: true,
fields: ['id', 'name'],
pageSize: 20,
emptyText: '', // placeholder
hideMode: 'offsets',
url: myComponent.config.connector_url, // Путь до коннектора
baseParams: {
action: 'mgr/system/element/chunk/getlist', // Путь до процессора
mode: 'chunks'
}
});
miniShop2.combo.Level.superclass.constructor.call(this, config);
};
Спасибо. Я решил проблему немного иначе:
```
var comboData = JSON.parse(MODx.config[«mycomponent.combodata_array»]);
```
В настройке массив хранится в виде:
```
[[«val1», «Label 1»], [«val2», «Label 2»], [«val3», «Label 3»]]
```
```
var comboData = JSON.parse(MODx.config[«mycomponent.combodata_array»]);
```
В настройке массив хранится в виде:
```
[[«val1», «Label 1»], [«val2», «Label 2»], [«val3», «Label 3»]]
```
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.