Ошибка при работе со своим классом
Добрый день. Для хранения данных создал свои таблицы в базе ModX, с помощью MigX создал пакет и файл модели из существующей таблицы. При попытке добавления объекта — вываливается в 500 ошибку, не понимаю почему.
Сниппет:
Сниппет:
<?php
$modx->addPackage('claims', MODX_BASE_PATH . 'core/components/claims/model/', 'claims_');
if (!isset($tplError)) {
$tplError = 'tpl.error';
}
if (!isset($tplSuccess)) {
$tplSuccess = 'tpl.success';
}
if (!empty($_POST)) {
$name = trim($_POST['name']);
if ($name == '') {
$output = $modx->getChunk($tplError, array('error' => 'Не указано название'));
return $output;
}
$mo = $modx->getObject('Mo', array(
'name' => $name
));
if ($mo) {
$output = $modx->getChunk($tplError, array('error' => 'Организация с таким названием уже существует'));
$output .= $modx->getChunk('tpl.mo.form', array('name' => $name));
return $output;
}
$mo = $modx->newObject('Mo', array(
'name' => $name,
'created_by' => $modx->user->id,
'deleted' => 0
));
$mo->save();
$output = $modx->getChunk($tplSuccess, array('success' => 'Организация «'.$name.'» успешно создана'));
$output .= $modx->getChunk('tpl.mo.created');
return $output;
}
$output = $modx->getChunk('tpl.mo.form');
return $output;
Модель:<?xml version="1.0" encoding="UTF-8"?>
<model package="claims" baseClass="xPDOObject" platform="mysql" defaultEngine="MyISAM" version="1.1">
<object class="Mo" table="mo" extends="xPDOSimpleObject">
<field key="name" dbtype="varchar" precision="255" phptype="string" null="false" />
<field key="created_by" dbtype="smallint" precision="6" phptype="integer" null="false" />
<field key="deleted" dbtype="tinyint" precision="1" phptype="integer" null="false" />
<field key="deleted_by" dbtype="smallint" precision="6" phptype="integer" null="false" />
<field key="deleted_on" dbtype="timestamp" phptype="timestamp" null="false" default="CURRENT_TIMESTAMP" />
</object>
</model>
Логи modx:[2017-09-21 13:03:44] (ERROR @ /home/user/domains/domain.ru/public_html/subdomain/core/xpdo/xpdo.class.php: 644) Could not load class: Mo from mysql.mo.Логи сервера:
[2017-09-21 13:03:44] (ERROR @ /home/user/domains/domain.ru/public_html/subdomain/core/xpdo/xpdo.class.php: 762) Mo::load() is not a valid static method.
[2017-09-21 13:03:44] (ERROR @ /home/user/domains/domain.ru/public_html/subdomain/core/xpdo/xpdo.class.php: 644) Could not load class: Mo from mysql.mo.
[Thu Sep 21 13:03:44.639120 2017] [:error] [pid 6216] [client 212.109.27.151:2568] PHP Fatal error: Call to a member function save() on null in /home/user/domains/domain.ru/public_html/subdomain/core/cache/includes/elements/modsnippet/50.include.cache.php on line 32, referer: subdomain.domain.ru/index.php?id=25
Комментарии: 6
отключай куски кода и смотри в какой момент начнет отвечать
500 ошибка пропадает, если закомментировать строчку
Ошибки в логе ModX при этом остаются.
$mo->save();
.Ошибки в логе ModX при этом остаются.
В директории пакета 'core/components/claims/' у меня только папка 'model/schema' с xml-схемой. Нужны ли для работы пакеты другие файлы?
конечно, именно других файлов вам и не хватает, вам либо надо сгенерить мапу по вашей схеме, либо сразу создайте. Пример github.com/bezumkin/miniShop2/tree/master/core/components/minishop2/model/minishop2/mysql
Спасибо. Вопрос решен нажатием кнопки «Parse schema» в MigX.
Вопрос решен нажатием кнопки «Parse schema» в MigX.отлично, не знал таких подробностей про MigX.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.