xtype: данные записываются в базу но не выводятся в поле
Всем привет! Ребята, подскажите где косячу. Есть xtype который получает детей определенного родителя и берет у них id и pagetitle. Выпадающий список формируется, данные в базу записываются, правда в виде массива из id:
xtype:
Пока накостылил через плагин на событии 'OnDocFormPrerender'.
Появился еще вопрос: почему не срабатывают listeners?
[12,15]
А вот после обновления страницы сохраненные данные в поле не подставляются. Поле добавляю через систему плагинов расширения miniShop2.xtype:
miniShop2.combo.InShop = function (config) {
config = config || {};
console.log(config);
Ext.applyIf(config, {
xtype: 'superboxselect',
allowBlank: true,
msgTarget: 'under',
allowAddNewData: false,
addNewDataOnBlur: true,
pinList: false,
resizable: true,
name: config.name,
anchor: '100%',
minChars: 0,
store: new Ext.data.JsonStore({
id: config.name+'-store',
root: 'results',
autoLoad: false,
autoSave: false,
totalProperty: 'total',
fields: ['pagetitle', 'id'],
url: '/assets/components/cov/connector.php',
baseParams: {
action: 'mgr/shops/getlist',
combo: true,
parent: config.parent
}
}),
mode: 'remote',
displayField: 'pagetitle',
valueField: 'id',
triggerAction: 'all',
extraItemCls: 'x-tag',
expandBtnCls: 'x-form-trigger',
clearBtnCls: 'x-form-trigger'
});
config.name += '[]';
miniShop2.combo.InShop.superclass.constructor.call(this, config);
};
Ext.extend(miniShop2.combo.InShop, Ext.ux.form.SuperBoxSelect);
Ext.reg('minishop2-combo-inshop', miniShop2.combo.InShop);
Процессор:<?php
class msPluginGetListProcessor extends modObjectGetListProcessor
{
public $classKey = 'modResource';
public $defaultSortField = 'id';
public $defaultSortDirection = 'ASC';
public $fromRes = 33173;
/**
* @return bool|null|string
*/
public function initialize()
{
if (!$this->modx->hasPermission($this->permission)) {
return $this->modx->lexicon('access_denied');
}
if (!empty($this->getProperty('parent'))) {
$this->fromRes = $this->getProperty('parent');
}
return parent::initialize();
}
/**
* Can be used to adjust the query prior to the COUNT statement
*
* @param xPDOQuery $c
* @return xPDOQuery
*/
public function prepareQueryBeforeCount(xPDOQuery $c) {
$c->where(array(
'parent' => $this->fromRes
));
return $c;
}
/**
* @param xPDOObject $object
*
* @return array
*/
public function prepareRow(xPDOObject $object)
{
$data = array();
if ($this->getProperty('combo')) {
$data = array(
'id' => $object->get('id'),
'pagetitle' => $object->get('pagetitle'),
);
} else {}
return $data;
}
}
return 'msPluginGetListProcessor';
Пока накостылил через плагин на событии 'OnDocFormPrerender'.
Появился еще вопрос: почему не срабатывают listeners?
Ext.applyIf(config, {
...
listeners: { // - Не отрабатывает. Не понимаю почему(((
render: {
fn: function (data) {
console.log('Show:', data);
/*Ext.getCmp('modx-panel-resource').getForm().setValues({'inshop[]':['33174','33175']})
MODx.fireResourceFormChange();*/
}
}
}
});
Поблагодарить автора
Отправить деньги
Комментарии: 15
Самое интересное, что данные из базы приходят. Пробовал руками подставлять данные разного формата — число, массив чисел, объект ( {id:33174} ), но все без толку(((
Что не так?
Что не так?
fields: ['pagetitle', 'id'],
value: { value: 3374 }
Володя, привет. Не помогает((( И фишка еще в том, что там можно несколько магазинов выбрать
привет.
это ответ на вопрос —
это ответ на вопрос —
Что не так?
А можешь чуть развернутей?
Если ты про разные форматы, то так тоже не работает:
Если ты про разные форматы, то так тоже не работает:
ну тебя не смущает что в конфиге указаны поля
'pagetitle', 'id'
и в процессоре ты вроде как отдаешь их же, а на скрине у тебя value: { value: 3374 }
Смущает! Только я руками в конфиг пишу value разных форматов и не спасает.
Да процессор это для построения выпадающено списка. Список строится нормально!) А вот value не хочет подставляться.
Да процессор это для построения выпадающено списка. Список строится нормально!) А вот value не хочет подставляться.
А вот value не хочет подставляться.а как ты думаешь откуда подставляется value?
Судя по тому что я вижу — из конфига. Ну или я ошибаюсь(((
в консоли если выполнить
Ext.getCmp('modx-panel-resource').getForm().setValues({'inshop[]':['33174']})
значение выставится у поля?
Да!
отлично. а затем выполни
Ext.getCmp('modx-resource-inshop').value
и сравни с тем что ты выставляешь в конфиге.
А приходит массив объектов. Но я не могу понять где это регулируется. Если мой процессор только для построения списка, то где генерируется результат выборки из базы?
Они же в таком формате в базе и хранятся… Их нужно отдельно где-то получать и вставлять?
Если ты про разные форматы...да, я про разные форматы.
то так тоже не работает:поздравляю, один косяк исправлен… Изучай дальше в чем дело.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.