Подскажите, пожалуйста, как установить значение поля, сделав запрос на сервер?
Есть поле в админке на странице компонента:
Есть процессор, который получает данные из базы. Как из ExtJS обратиться к этому процессору и результат запроса вставить в value этого поля?
ModXSaver.panel.CodeEditor = function(config) {
config = config || {};
Ext.apply(config,{
id: 'modxsaver-texteditor'
,border: false
,baseCls: 'modx-formpanel'
,cls: 'container'
,items: [{
html: '<p>'+_('xsaver_desc')+'</p>'
,border: false
,bodyCssClass: 'panel-desc'
},{
id: 'mod-xsaver-texteditor'
,xtype: 'modx-texteditor'
,height: 300
,width: '99%'
,value: _('xsaver_default_value')
}]
});
ModXSaver.panel.CodeEditor.superclass.constructor.call(this,config);
};Есть процессор, который получает данные из базы. Как из ExtJS обратиться к этому процессору и результат запроса вставить в value этого поля?
Комментарии: 9
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Боюсь, я что-то не так делаю…
В методе success ты можешь получить нужный объект и сделать с ним что-то, а return работает только в синхронных запросах.
После успешного ajax запроса будет получен инпут страницы по id и выставлено значение для него.
Можно указать и id всей формы, чтобы выставить значения сразу для всех полей:
Для получения DOM у Ext есть Ext.get(), а Ext.getCmp() получает именно объект, у которого есть всякие полезные методы, типа setValue().
суть: Создание textfield на лету при создание(редактирование) записи, т.е. При нажатии Добавить, всплывает окно в котором на лету созданные textfield, к примеру 3 штуки, а если это UPDATE то и их значение соответственно, помимо этого есть поля не созданные на лету.
При сохранение отправляется в процессор, в котором поля созданные на лету колбасятся в JSON и записыватся в 1 колонку БД.
Вот столкнулся сразу же с проблемой
Есть процессор, в нем получаю массив полей
Обращаюсь к этому процессору и хочу вставить в функцию определения полей getFields:
Ajax запрос отрабатывает позже чем весь код, поэтому console.log(fieldsArr + ' — массив полей'), не выводит массив. Если получить массив полей, то наверно лучше его обработать в js, а не выдавать id: config.id + '-name', в php?
Подскажите как быть с запросом к процессору, может в плагине раньше получать, но тогда я не смогу получить текущее value при апдейте.
JavaScript делает ассинхронный запрос и то, что указано внутри success выполняется после всего остального кода. Вот внутри этого success вам нужно заново найти окно (которое в этот момент уже будет открыто) и модифицировать его.
К сожалению, конкретных методов ExtJS для этого подсказать не смогу. Создайте отдельный вопрос конкретно под эту задачу — как в ExtJS обратиться к окну по его id и добавить в него полей. Надеюсь, вам помогут.
Тему создал modx.pro/help/9977/