16 нояб. 2014 г., 15:04
Расширение MODx.combo.ComboBox, форма отправляет необработанные данные
Я внимательно следовал документации расширил стандартный компонент MODx.combo.ComboBox с помощью простого кода, затем вставил компонент в моё MODx.window. Ниже код моего комбокса
imp.panel.DirList = function(config) { config = config || {}; Ext.applyIf(config,{ baseParams: { action: 'mgr/getcategory' }, autoLoad: true, fields: ['id', 'pagetitle'], idProperty: 'id', url: '/assets/components/importer/connector.php', valueField: 'id', displayField: 'pagetitle', width: 300 }); imp.panel.DirList.superclass.constructor.call(this,config); }; Ext.extend(imp.panel.DirList, MODx.combo.ComboBox); Ext.reg('imp-combo-home', imp.panel.DirList);
Я думаю всё более чем прозрачно, процессор написан и комбокс успешно выводит список документов, но вот в чём трабла: на сервер отправляется pagetitle, а не id.
Ковыряясь в этом вопросе я, с помощью нехитрых махинаций, создал компонент в сфере window, а затем добавил его на панель - это позволило мне работать с компонентом из консоли браузера без каких либо затруднений.
Не суть подход, суть результат.
Если в консоли выполнить метод getValue() то мы получаем ID выбранного документа, то же значение содержит поле value. Заголовок же выбранного документа возвращает метод getRawValue() - этот результат меня не интересует, но именно он отправляется на сервер, хотя, как вы могли заметить. Как быть, как заставить отправлять на сервер поле value а не rawData ??? ЧЯДНТ
Я так понимаю у вас с самим комбо все ОК, то есть само комбо работает корректно. Но скорее всего оно в рамках какого-то другого компонента, и данные на сервер шлются всей формы (включая и данные этого комбобокса). Затык именно в получении данных от этого комбобокса.
1. Выложите на гист или типа того листинг всего компонента.
2. Попробуйте комбе задать hiddenName: 'id'.
В точку! Заменил параметр name на hiddenName - теперь на сервер ходит именно id а не pagetitle. Ларчик просто открывался, хоть и не явно совсем....
Это такой прикол именно с некоторыми форм-элементами (в том числе комбобокса).