27 февр. 2015 г., 15:39

Создание документа через собственный процессор наследуемый от modResourceUpdateProcessor

Всем Ку!
В компоненте расширяю modResource. В extjs соответственно наследую к примеру MODx.page.UpdateResource. Я достаточно давно применяю подобную практику для добавления необходимого ф-ла (доп. поля, объекты, вкладки) в стандартный интерфейс создания/редактирования ресурсов.
Обычно для сохранения и создания я пользовался стандартными процессорами (model/modx/processors/resource/update.class.php, model/modx/processors/resource/create.class.php). Но сегодня мне понадобилось использовать собственный процессор который просто расширяет modResourceUpdateProcessor.
Ext.extend(carManager.page.UpdateModification,MODx.page.UpdateResource,{ getButtons: function(cfg) { var btns = []; if (cfg.canSave == 1) { btns.push({ process: 'resource/update' ,text: '<i class="'+ ('icon icon-check') + '"></i> ' + _('cm_btn_save') ,method: 'remote' ,checkDirty: cfg.richtext || MODx.request.activeSave == 1 ? false : true ,cls: 'primary-button' ,keys: [{ key: MODx.config.keymap_save || 's' ,ctrl: true }] });
Как видно при нажатии кнопки «сохранить» мы отправим весь нас паровоз данных процессору model/modx/processors/resource/update.class.php. Но я ни как не могу понять, как мне воспользоваться моим процессором который лежит в папке процессоров моего компонента (carManager/core/components/carmanager/processors/mgr/modification/update.class.php)
Я мог бы решить проблему в лоб. Создать процессоры в model/modx/processors/ или использовать плагин. Но это все не правильно. Чувствую я есть более красивое решение проблемы.
Ну, самое простое, это все-таки подменить УРЛ коннектора, к примеру, передав его параметром при вызове или просто прописать в компоненте. Но надо еще следить за этим блоком кода. Даже если у вас расширенный процессор, при апдейте специфических CRC, для которых используются собственные процессоры, будут в итоге вызваны их процессоры, а не ваши.
Спасибо Вам большое. Действительно все просто, достаточно просто подменить УРЛ коннектора.
По поводу getInstance его также можно переписать в своем контролере. Достаточно заменить на $object = $modx->getObject($classKey,$properties['id']);. Вот только я не могу понять, чем грозит этот getInstance. Если будет вызван стандартный процессор. Не нашел мест, где это может использоваться.
Вот только я не могу понять, чем грозит этот getInstance. Если будет вызван стандартный процессор. Не нашел мест, где это может использоваться.
Ну, к примеру, не будет вызван процессор shopModx, который должен не только обновить текущий документ, но и связанный объект ShopmodxProduct. Скажу, будет печалька тогда. Так что просто так лучше вообще эти процессоры не трогать. Вероятно правильней было бы вклиниться на уровне плагинов, а не процессоров.

Добавить комментарий