Как в админке с помощью ExtJS отследить изменение значения TV и поменять его сразу или перезагрузкой стараницы?
Есть плагин изменения значения tv при определенных условиях.
Пробовал так, при изменении значения TV присваивать переменной значение true ($a=true;) и передать значение переменной в код с событием OnDocFormPrerender для проверки, но ничего не выходит.
Нужно чтобы при изменении значения определенного tv поля в плагине на событие 'OnDocFormSave' значение tv сразу менялось в инпуте в админке.
А то получается, что значение поля изменено, а в инпуте этого TV поля остается старое значение. И получается, что так до бесконечности можно изменять, а значение в инпут будет старое, и при сохранении ресурса будет опять меняться в базе, а в инпут оставаться старое… пока не перезагрузишь страницу Ctrl+F5
Подскажите как правильно реализовать сию задумку?
Заранее. благодарю!
if ($modx->event->name == 'OnDocFormSave' && $mode != 'new') {
//куча условий
//.......
// меняем значение TV
$resource->setTVValue('my_tv', 'Новое значение');
//...
}
//перезагружает страницу в админке при каждом сохранении ресурса
//НЕ пойму как сделать, чтобы перезагружалось только при изменении значения TV
if ($modx->event->name == 'OnDocFormPrerender' && $mode != 'new') {
$modx->controller->addHTML('
<script type="text/javascript">
Ext.ComponentMgr.onAvailable("modx-panel-resource", function (e) {
var res = Ext.getCmp("modx-panel-resource");
res.on("beforeSubmit", function(){
//Перезагрузка страницу после сохранения
location.reload();
});
});
</script>');
}Данная конструкция перезагружает страницу в админке при каждом сохранении ресурса, НЕ пойму как сделать, чтобы перезагружалась только при изменении значения TV… Не могу передать значение переменной из кода на событие OnDocFormSave в код на событие OnDocFormPrerender, представляется, что это невозможно...Пробовал так, при изменении значения TV присваивать переменной значение true ($a=true;) и передать значение переменной в код с событием OnDocFormPrerender для проверки, но ничего не выходит.
Нужно чтобы при изменении значения определенного tv поля в плагине на событие 'OnDocFormSave' значение tv сразу менялось в инпуте в админке.
А то получается, что значение поля изменено, а в инпуте этого TV поля остается старое значение. И получается, что так до бесконечности можно изменять, а значение в инпут будет старое, и при сохранении ресурса будет опять меняться в базе, а в инпут оставаться старое… пока не перезагрузишь страницу Ctrl+F5
Подскажите как правильно реализовать сию задумку?
Заранее. благодарю!
Комментарии: 17
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Как можно передать из кода, который выполняется позже в код, который выполняется раньше?
Как в админке с помощью ExtJS отследить изменение значения TV и поменять его сразу или перезагрузкой стараницы?
По ExtJs куча документация на офф сайте docs.sencha.com/extjs/3.4.0/
Да офф документация есть, но документации именно по MODX ExtJs нет. И как применить это все к MODX никак не могу разобраться.
Если нужно на лету подменять значение, то js в помощь
Например
будет отслеживать в реальном времени при вводе в инпут, но никак не будет отслеживать изменение значения в базе.
можно пример. применительно к поставленной задаче…
console.log($("#tv10").val());
});
вместо консоль лога, делай запрос на самописный контроллер и проверяй то что нужно изменить, очень извращенный вариант)))
лучше напиши задачу полностью, может есть более элегантное решение
Нужно чтобы при изменении значения определенного tv поля в плагине на событие 'OnDocFormSave' значение tv сразу менялось в инпуте в админке.
А то получается, что значение поля изменено, а в инпуте этого TV поля остается старое значение. И получается. что так до бесконечности можно изменять, а значение в инпут будет старое, пока не перезагрузишь страницу Ctrl+F5
поставить submit
Другие события можно тут подсмотреть — docs.sencha.com/extjs/3.4.0/#!/api/Ext.form.TextField
Задача отловить изменение значения TV при сохранении ресурса и передать новое значение скрипту, а не отлавливать ввод с клавиатуры в одно поле с тем чтобы значение менялось в другом
Значение поля меняется сразу после сохранения без перезагрузки страницы. Вставляется сразу значение и оно видно в поле, исключение TV поле типа image, так как в image вставляется вначале в скрытое поле (как сделать чтобы в TV типа image значение сразу было видно в поле, пока не понял).
Значение вставляется, однако это значение получено из базы до изменения (то есть старое значение), поскольку событие «OnDocFormPrerender» происходит до загрузки формы редактирования ресурса в менеджере и скрипт регистрируется со старым значением.
Проблемы (задачи/вопросы).
1. Как отловить изменение значения при сохранении ресурса и передать новое значение скрипту, не могу понять. Ведь как-то, думаю, на ExtJS можно отловить это событие (изменение значения при сохранении ресурса «OnDocFormSave») и передать уже зарегистрированному скрипту???
2. Как сделать, чтобы в TV поле типа image вставляемое скриптом значение сразу становилось видимым?
А пока данный кодом можно воспользоваться (может кому пригодиться), если нужно вставить при сохранении ресурса значение из одного TV поля в другое, при этом значение сразу видно в админке и сохраняется в базе.