Не работает свой процессор

Добрый день.
Помогите с вопросом.
У меня есть форма AjaxForm, которая обрабатывается своим сниппетом, в котором в свою очередь вызывается свой процессор для добавления данных в БД.

Данные в сниппет приходят, но вот с процессора уже ничего не идет и идет 500 ошибка action.php компонента AjaxForm.
Вот код сниппета:

if (!empty($_POST['name'])) {
	$processor = 'web/create';
	$processorProps = array('processors_path' => $modx->getOption('core_path')
		. 'components/myc/processors/');
	$response = $modx->runProcessor($processor, $_POST, $processorProps);
	return $AjaxForm->success('Форма прошла проверку');
}
Вот код процессора

<?php

class MyCompCreateProcessor extends modObjectCreateProcessor
{
    public $objectType = 'MyComp';
    public $classKey = 'MyComp';
    public $languageTopics = array('myc');

    /**
     * @return bool
     */
    public function beforeSet()
    {
        $name = trim($this->getProperty('name'));
        if (empty($name)) {
            $this->modx->error->addField('name', $this->modx->lexicon('myc_err_name'));
        } elseif ($this->modx->getCount($this->classKey, array('name' => $name))) {
            $this->modx->error->addField('name', $this->modx->lexicon('myc_err_ae'));
        }

        return parent::beforeSet();
    }

}

return 'MyCompCreateProcessor';
Андрей
24 февраля 2017, 15:01
modx.pro
1 802
0

Комментарии: 5

Андрей
25 февраля 2017, 19:17
0
Па-ма-ги-те)) Может я неправильно вызываю процессор?
    Воеводский Михаил
    25 февраля 2017, 19:35
    0
    А где текст 500 ошибки?
      Андрей
      25 февраля 2017, 19:43
      0
      Вот ошибка
      Fatal error: Uncaught Error: Call to a member function fromArray() on null in /public_html/core/model/modx/modprocessor.class.php:630
      Stack trace:
      #0 /public_html/core/model/modx/modprocessor.class.php(173): modObjectCreateProcessor->process()
      #1 /public_html/core/model/modx/modx.class.php(1704): modProcessor->run()
      #2 /public_html/core/cache/includes/elements/modsnippet/56.include.cache.php(9): modX->runProcessor('web/create', Array, Array)
      #3 /public_html/core/model/modx/modscript.class.php(70): include('/home/s/sopteh/...')
      #4 /public_html/core/components/ajaxform/model/ajaxform/ajaxform.class.php(130): modScript->process()
      #5 /public_html/assets/components/ajaxform/action.php(30): AjaxForm->process('d2b1a010d31da7a...', Array)
      #6 {main}
      thrown in /public_html/core/model/modx/modprocessor.class.php on line 630
        Воеводский Михаил
        25 февраля 2017, 20:17
        +1
        Из-за того, что не загружена модель, стандартная операция
        $this-->object = $this->modx->newObject($$this->classKey);
        в процессоре modObjectCreateProcessor не создает объект.

        Необходимо подгрузить модель через $modx->getService() или $modx->addPackage() до вызова процессора.
          Андрей
          26 февраля 2017, 12:30
          0
          Михаил, спасибо большое. Инициализировал класс с помощью $modx->getService() и все стало работать как положено.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      5