modx процессоры.
Здравствуйте. Второй день я пытаюсь разобраться в технологии создания процессоров. Помогите мне пожалуйста разобраться.
Верно ли, что чтобы использовать свой самописный процессор, мне нужно обязательно написать компонент? Я могу написать свой процессор, который будет возвращать обычное «Hallo world», кинуть его в папку со всеми процессорами и запускать через
Верно ли, что чтобы использовать свой самописный процессор, мне нужно обязательно написать компонент? Я могу написать свой процессор, который будет возвращать обычное «Hallo world», кинуть его в папку со всеми процессорами и запускать через
$response = $modx->runProcessor('my/test', $fields);
Я перерыл всю инфу что нашел, но так и не смог разобраться как создать свой простейший процессор, который будет возвращать hallo world…<?php
class modTestProcessor extends modProcessor {
public function getEcho() {
$res = 'Hallo World!';
return $res;
}
}
return 'modTestProcessor';
Комментарии: 3
Надо, чтобы в процессоре была функция process()
https://github.com/bezumkin/modExtra/blob/master/core/components/modextra/processors/mgr/items/remove.class.php
У тебя будет, наверное, так:
https://github.com/bezumkin/modExtra/blob/master/core/components/modextra/processors/mgr/items/remove.class.php
<?php
/**
* Remove an Items
*/
class modExtraItemsRemoveProcessor extends modProcessor {
public $checkRemovePermission = true;
public $objectType = 'modExtraItem';
public $classKey = 'modExtraItem';
public $languageTopics = array('modextra');
public function process() {
foreach (explode(',',$this->getProperty('items')) as $id) {
$item = $this->modx->getObject($this->classKey, $id);
$item->remove();
}
return $this->success();
}
}
return 'modExtraItemsRemoveProcessor';
У тебя будет, наверное, так:
<?php
class modTestProcessor extends modProcessor {
public function process() {
$res = 'Hallo World!';
return $res;
}
}
return 'modTestProcessor';
Спасибо. А вызывать процессор из сниппета так?
Fatal error: Cannot unset string offsets in /var/www/scripts/data/www/scripts.fvds.ru/core/model/modx/modprocessor.class.php on line 57
В файле это строчка
<?php
$otherProps = array(
'processors_path' => $modx->getOption('core_path') . '/model/modx/processors/my/'
);
$fields = '';
$response = $modx->runProcessor('my/test', $fields);
if ($response->isError()) {
return $modx->error->failure($response->getMessage());
}
print_r($response);
Сейчас ругается:Fatal error: Cannot unset string offsets in /var/www/scripts/data/www/scripts.fvds.ru/core/model/modx/modprocessor.class.php on line 57
В файле это строчка
unset($properties['HTTP_MODAUTH']);
В функции public function setProperties($properties) {
unset($properties['HTTP_MODAUTH']);
$this->properties = array_merge($this->properties,$properties);
}
Если процессор лежит в папке /model/modx/processors/my/ и называется test.class.php, то $otherProps не нужен (тем более, в коде он дальше нигде и не используется).
Чтобы использовать $response->isError(), надо, чтобы процессор возвращал $this->success($res) или $this->failure();
И тогда в конце надо выводить не $response, а $response->response или $response->object.
В остальном, вроде, все верно. Может, кто еще что подскажет, но проблема может быть в хостинге. Попробуйте то же самое сделать на бесплатном аккаунте http://modxcloud.com/ или https://h.simpledream.ru/
Чтобы использовать $response->isError(), надо, чтобы процессор возвращал $this->success($res) или $this->failure();
И тогда в конце надо выводить не $response, а $response->response или $response->object.
В остальном, вроде, все верно. Может, кто еще что подскажет, но проблема может быть в хостинге. Попробуйте то же самое сделать на бесплатном аккаунте http://modxcloud.com/ или https://h.simpledream.ru/
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.