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/
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.