Свой combox или выпадающий список для minishop (решено)
Привет!
С грехом пополам, смог надыбать коду в интернетах и сделать свой combox…
Но вот не задача, после того как я выбираю нужное мне значение и жму сохранить, это значение не сохраняется в базу.
Что я делаю не так?
описываю combox
i need help!
upd
Всем спасибо, я разобрался!
Проблема была в том, что я использовал уже существующее поле, а именно индекс адреса для заказа.
И соответственно, такие параметры как hiddenName и name у меня должны иметь значение, как изначально задумано разработчиком, а именно addr_index
upd
Собственно в большей степени пишу для себя, но вдруг кому пригодится
Мне требуется уже имеющиеся поле «индекс» в разделе «адрес» изменить на выпадающий список.
Итак, создаю сниппет с любым именем, ставлю галочку системные события на против msOnManagerCustomCssJs
код сниппета:
0
С грехом пополам, смог надыбать коду в интернетах и сделать свой 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;
}
Наслаждаюсь проделанной работой и самим собой =))