Не работает свой процессор
Добрый день.
Помогите с вопросом.
У меня есть форма AjaxForm, которая обрабатывается своим сниппетом, в котором в свою очередь вызывается свой процессор для добавления данных в БД.
Данные в сниппет приходят, но вот с процессора уже ничего не идет и идет 500 ошибка action.php компонента AjaxForm.
Вот код сниппета:
Помогите с вопросом.
У меня есть форма 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';
Комментарии: 5
Па-ма-ги-те)) Может я неправильно вызываю процессор?
А где текст 500 ошибки?
Вот ошибка
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
Из-за того, что не загружена модель, стандартная операция
Необходимо подгрузить модель через $modx->getService() или $modx->addPackage() до вызова процессора.
$this-->object = $this->modx->newObject($$this->classKey);
в процессоре modObjectCreateProcessor не создает объект. Необходимо подгрузить модель через $modx->getService() или $modx->addPackage() до вызова процессора.
Михаил, спасибо большое. Инициализировал класс с помощью $modx->getService() и все стало работать как положено.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.