31 июля 2017 г., 1:38

Получение данных в процессоре

В блоге Песочница

Здравствуйте. Наслышан, что тут знатные знатоки по работе с процессорами в MODX. Самому как-то не приходилось особо вникать в процессоры, за исключением использования штатных типа resource/create, но вот теперь такая необходимость возникла и вместе с ней небольшой ступор. Теперь к делу.
Есть своя CMP, там таблица с данными, в которой предположим 3 колонки id, name и третья колонка с кнопкой. При нажатии на кнопку берется id текущей строки и отправляется через коннектор на соответствующий процессор. Если например я на событие по клику повешу отправку на процессор remove, то соответственно нужная строка из таблицы будет удалена, значит кнопка точно работает. С этим разобрались. Но мне нужно отправить запрос на свой процессор и там обработать данные. Проблема в том что я не знаю как отловить переданный id в процессоре чтобы уже использовать его дальше. Например по клику на кнопку поле name меняется на заранее указанное в процессоре. Через приложение Николая Console это выглядело бы примерно так и name в табличке с соответствующим id меняется:

$id = 1; $res = $modx->getObject('myClass',$id); $res->set('name', 'New Name'); $res->save();
А вот как подобную манипуляцию выполнить в процессоре не знаю. То есть мне нужно получить в переменную id, получить объект и уже дальше выполнять свой скромный код. Пробовал так, но ничего не выходит:

$id = $this->getProperty('id');

Буду весьма благодарен за советы. Заранее спасибо.
> Но мне нужно отправить запрос на свой процессор и там обработать данные. Проблема в том что я не знаю как отловить переданный id в процессоре чтобы уже использовать его дальше.

А вы точно данные передаете на коннектор (и далее на процессор)?
Все входящие данные в процессоре видны в переменной $this->properties. Оттуда процессоры и дергают значения через метод $this->getProperty($propertyName);

Пропишите в своем процессоре

function initialize(){ $this->modx->log(1, print_r($this->properties, 1), 'FILE'); return parent::initialize(); }
И после вызова смотрите в MODX-логах что там вообще вам на процессор пришло.

Здравствуйте. Спасибо большое за ответ. Уже немного начинаю разбираться с процессорами, сделал в своем процессоре так, теперь данные в табличке меняются на заранее предустановленные:

class ScrapxScrappingProcessor extends modObjectUpdateProcessor { public $classKey = 'ScrapxPresets'; public $languageTopics = array('scrapx:scrapxpresets'); public function beforeSet() { $this->setProperty('name', 'New Name'); return parent::beforeSet(); } } return 'ScrapxScrappingProcessor';
Но теперь у меня другой вопрос. Возможно ли в процессоре обратиться, например, к ресурсу и изменить его поля или запустить в этом же процессоре системный resource/create? Кстати, подсматриваю в статью, которую вы мне дали по ссылке. Жаль нет поиска по вашему сайту, потому что раньше много полезных материалов было у вас, а сейчас их не найти.
Вроде бы разобрался насколько было нужно. Оказалось в процессорах немного не так надо было писать как, например, в сниппетах. Там чтобы получить объект нужно вот так оказывается:

$res = $this->modx->getObject('modResource',2);
Николай, спасибо за ваши статьи по процессорам модекса, очень помогли. Оказывается процессоры вообще очень крутая штука, почему я их раньше не использовал...
Всегда пожалуйста.

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