Поле ComboBox товара minishop2

Доброго времени суток всем!
Помогите с синтаксисом 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, но как адаптировать пример под мой плагин, понять пока не получилось — отличается синтаксис. Если у кого завалялся кусок кода реализованным комбобоксом, прошу поделиться.
Алексей
19 августа 2016, 09:48
modx.pro
3
2 182
0

Комментарии: 5

Марат Марабар
19 августа 2016, 13:31
1
+1
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
Проверяй.
    Алексей
    19 августа 2016, 13:43
    0
    Всё отлично работает, спасибо огромное!
      Олег
      11 мая 2018, 11:24
      0
      Подскажите, пожалуйста, как сделать, чтобы массив data (значения для выпадающего списка) брался из системной настройки MODX?
        Марат Марабар
        11 мая 2018, 13:58
        0
        Для этого процессор должен вернуть требуемый массив, например этот код вернёт список всех чанков:

        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);
        };
          Олег
          11 мая 2018, 16:36
          0
          Спасибо. Я решил проблему немного иначе:
          ```
          var comboData = JSON.parse(MODx.config[«mycomponent.combodata_array»]);
          ```
          В настройке массив хранится в виде:
          ```
          [[«val1», «Label 1»], [«val2», «Label 2»], [«val3», «Label 3»]]
          ```
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5