Добавить combobox в форму редактирования пользователя в админке
С добавлением поля практически справился. Создал плагин на события OnUserFormPrerender и OnUserFormSave с кодом:
Два JS файла:
1. Для вывода новой вкладки
2. Для combobox
В результате получилось вот так
Combobox выводится и данные сохраняются, но сделать чтобы после повторного открытия формы в combobox подставлялось уже сохраненное значение не получается.
И еще один вопрос, где подключить лексокон чтобы можно было вывести тексты из кода JS?
<?php
switch($modx->event->name) {
case 'OnUserFormPrerender':
$modx->regClientStartupScript('/assets/components/orders/js/mgr/user_form/combo.js');
$modx->regClientStartupScript('/assets/components/orders/js/mgr/user_form/tab.js');
break;
case 'OnUserFormSave':
$profile = $user->getOne('Profile');
$fields = $profile->get('extended');
$fields['manager'] = $_POST['manager'];
$profile->set('extended', $fields);
$profile->save();
break;
}
Два JS файла:
1. Для вывода новой вкладки
Ext.onReady(function() {
var usertabs = Ext.getCmp('modx-user-tabs');
usertabs.add({
title: 'Модуль Заказы',
layout: 'form',
autoScroll: true,
autoHeight: true,
labelAlign: 'top',
cls: 'main-wrapper',
items: [
{
xtype: 'modx-orders-manager',
name: 'manager',
fieldLabel: 'Менеджер',
width: 176,
}
]
});
});
2. Для combobox
MODx.combo.Manager = function (config) {
config = config || {};
Ext.applyIf(config, {
name: 'manager',
hiddenName: config.name || 'manager',
displayField: 'name',
valueField: 'id',
fields: ['id', 'name'],
pageSize: 9999,
hideMode: 'offsets',
emptyText: ' - ',
url: MODx.config.assets_url+'components/orders/connector.php',
baseParams: {
action: 'mgr/manager/getlist',
sort: 'name',
dir: 'asc',
combo: true,
limit: 9999,
}
});
MODx.combo.Manager.superclass.constructor.call(this, config);
};
Ext.extend(MODx.combo.Manager, MODx.combo.ComboBox);
Ext.reg('modx-orders-manager', MODx.combo.Manager);
В результате получилось вот так
Combobox выводится и данные сохраняются, но сделать чтобы после повторного открытия формы в combobox подставлялось уже сохраненное значение не получается.
И еще один вопрос, где подключить лексокон чтобы можно было вывести тексты из кода JS?
Комментарии: 4
hiddenName: 'name',
вообщем укажи поле из таблицы своей только, тогда должно показываться выбранное значение
Редактирование отключили, не могу изменить. Там по идее вставить нужно то, что в секции name
hiddenName: 'manager',
спасибо )
Проблему решил следующим образом
1. Добавил событие OnUserFormRender и код в плагин
Проблему решил следующим образом
1. Добавил событие OnUserFormRender и код в плагин
case 'OnUserFormRender':
if($mode != 'new'){
$fieldExt = $user->getOne('Profile')->get('extended');
$modx->regClientStartupHTMLBlock('
<script type="text/javascript">
Ext.onReady(function() {
Ext.getCmp(\'modx-user-manager\').setValue(' . $fieldExt['manager'] . ');
})
</script>
');
}
break;
2. Добавил параметр ID , в результате получилосьitems: [{
id: 'modx-user-manager',
xtype: 'modx-orders-manager',
name: 'modx-user-manager',
fieldLabel: 'Менеджер',
width: 176,
}
]
Осталась только проблема с лексиконом. Никак не получается его подключить в файл JS. Как я понимаю это нужно делать в плагине, но подключение $modx->lexicon->load('orders:default'); ничего не дает
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.