Поле 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, 12:48    Алексей   
2    490 0


Комментарии ()

  1. Марат Марабар 19 августа 2016, 13:31 # +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
    Проверяй.
    1. Алексей 19 августа 2016, 13:43 # 0
      Всё отлично работает, спасибо огромное!
      1. Олег 11 мая 2018, 11:24 # 0
        Подскажите, пожалуйста, как сделать, чтобы массив data (значения для выпадающего списка) брался из системной настройки MODX?
        1. Марат Марабар 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);
          };
          
          1. Олег 11 мая 2018, 16:36 # 0
            Спасибо. Я решил проблему немного иначе:
            ```
            var comboData = JSON.parse(MODx.config[«mycomponent.combodata_array»]);
            ```
            В настройке массив хранится в виде:
            ```
            [[«val1», «Label 1»], [«val2», «Label 2»], [«val3», «Label 3»]]
            ```
      Вы должны авторизоваться, чтобы оставлять комментарии.