Здравствуйте. Наслышан, что тут знатные знатоки по работе с процессорами в 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-логах что там вообще вам на процессор пришло.
Ну и почитайте внимательно это: https://modxclub.ru/topics/vse-chto-vyi-xoteli-znat-o-proczessorax-no-boyalis-sprosit-1563.html
Здравствуйте. Спасибо большое за ответ. Уже немного начинаю разбираться с процессорами, сделал в своем процессоре так, теперь данные в табличке меняются на заранее предустановленные:
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);
Николай, спасибо за ваши статьи по процессорам модекса, очень помогли. Оказывается процессоры вообще очень крутая штука, почему я их раньше не использовал...
Всегда пожалуйста.