plotnikov 27 февраля 2015 0 3
-1
Всем Ку!

В компоненте расширяю 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/ или использовать плагин. Но это все не правильно. Чувствую я есть более красивое решение проблемы.
3 комментария
Fi1osof1
Fi1osof 27 февраля 2015г в 19:59 #
Ну, самое простое, это все-таки подменить УРЛ коннектора, к примеру, передав его параметром при вызове или просто прописать в компоненте. Но надо еще следить за этим блоком кода. Даже если у вас расширенный процессор, при апдейте специфических CRC, для которых используются собственные процессоры, будут в итоге вызваны их процессоры, а не ваши.
p
plotnikov 27 февраля 2015г в 20:38 #
Спасибо Вам большое. Действительно все просто, достаточно просто подменить УРЛ коннектора.

По поводу getInstance его также можно переписать в своем контролере. Достаточно заменить на $object = $modx->getObject($classKey,$properties['id']);. Вот только я не могу понять, чем грозит этот getInstance. Если будет вызван стандартный процессор. Не нашел мест, где это может использоваться.
Fi1osof1
Fi1osof 27 февраля 2015г в 20:43 #
Вот только я не могу понять, чем грозит этот getInstance. Если будет вызван стандартный процессор. Не нашел мест, где это может использоваться.
Ну, к примеру, не будет вызван процессор shopModx, который должен не только обновить текущий документ, но и связанный объект ShopmodxProduct. Скажу, будет печалька тогда. Так что просто так лучше вообще эти процессоры не трогать. Вероятно правильней было бы вклиниться на уровне плагинов, а не процессоров.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.