Свой combox или выпадающий список для minishop (решено)

Привет!

С грехом пополам, смог надыбать коду в интернетах и сделать свой combox…

Но вот не задача, после того как я выбираю нужное мне значение и жму сохранить, это значение не сохраняется в базу.

Что я делаю не так?

описываю combox
var storesex = new Ext.data.ArrayStore({
    id: 'minishop2-product-sex',
    fields: [
        {name: 'name', type: 'string'}
    ],
    data: [
        ['Мужской'],
        ['Женский'],
        ['Унисекс']
    ]
});

miniShop2.combo.ProductSex = function(config) {
    config = config || {};
    Ext.applyIf(config,{
        store: storesex,
        emptyText: _('ms2_combo_select'),
        displayField: 'name',
        valueField: 'name',
        hiddenName: 'sex',
        mode: 'local',
        triggerAction: 'all',
        editable: false,
        selectOnFocus: false,
        preventRender: true,
        forceSelection: true,
        enableKeyEvents: true
    });
    miniShop2.combo.ProductSex.superclass.constructor.call(this,config);
};
Ext.extend(miniShop2.combo.ProductSex,MODx.combo.ComboBox);
Ext.reg('minishop2-combo-product-sex',miniShop2.combo.ProductSex);
и прописываю, что бы уже существующее поле minishop'a изменилось и стало комбобоксом.

this.fields.items[2].items[3].items[1].items[0]={
                xtype: 'minishop2-combo-product-sex',
                fieldLabel: 'Пол',
                name: 'sex',
                allowBlank: false
                };
жму сохранить… и не сохраняется ='(

i need help!

upd

Всем спасибо, я разобрался!
Проблема была в том, что я использовал уже существующее поле, а именно индекс адреса для заказа.
И соответственно, такие параметры как hiddenName и name у меня должны иметь значение, как изначально задумано разработчиком, а именно addr_index

upd
Собственно в большей степени пишу для себя, но вдруг кому пригодится

Мне требуется уже имеющиеся поле «индекс» в разделе «адрес» изменить на выпадающий список.

Итак, создаю сниппет с любым именем, ставлю галочку системные события на против msOnManagerCustomCssJs

код сниппета:
<?php
switch ($modx->event->name) {
    case 'msOnManagerCustomCssJs':
        if ($page != 'orders') return;
        $modx->controller->addHtml("
        <script>
            Ext.ComponentMgr.onAvailable('minishop2-window-order-update', function(){
                //описываю поле и задаю нужные мне характеристики:
                this.fields.items[2].items[3].items[1].items[0]={
                xtype: 'minishop2-combo-product-sex',
                fieldLabel: 'Пол',
                name: 'addr_index', //т.к. я использую уже имеющееся поле минишопа, а именно индекс в закладке адрес, то указываю имя этого поля.
                allowBlank: true //данный параметр дает возможность оставлять поле не заполненным при сохранении
                };
                //создаю варианты доступные к выбору:
                var storesex = new Ext.data.ArrayStore({
                    id: 'minishop2-product-sex',
                    fields: [
                        {name: 'name', type: 'string'}
                    ],
                    data: [
                        ['Мужской'],
                        ['Женский'],
                        ['Унисекс']
                    ]
                });
                
                //описываю и регистрирую новый тип комбобокса:
                miniShop2.combo.ProductSex = function(config) {
                    config = config || {};
                    Ext.applyIf(config,{
                        store: storesex,
                        emptyText: _('ms2_combo_select'),
                        displayField: 'name',
                        valueField: 'name',
                        hiddenName: 'addr_index', //здесь так же
                        mode: 'local',
                        triggerAction: 'all',
                        editable: false,
                        selectOnFocus: false,
                        preventRender: true,
                        forceSelection: true,
                        enableKeyEvents: true
                    });
                    miniShop2.combo.ProductSex.superclass.constructor.call(this,config);
                };
                Ext.extend(miniShop2.combo.ProductSex,MODx.combo.ComboBox);
                Ext.reg('minishop2-combo-product-sex',miniShop2.combo.ProductSex);
        });
        </script>");
        break;
}
Наслаждаюсь проделанной работой и самим собой =))

Дмитрий
30 августа 2025, 21:52
modx.pro
50
0

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

Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
0