Добавление столбца в таблицу при установке плагина
Пишу свой плагин для miniShop2. И мне необходимо при установке моего плагина в таблицу modx_ms2_products добавить столбец. Но при установке плагина происходит затык (никаких ошибок при этом нет) и плагин не устанавливается. Пробовал разные варианты, но никак не получается.
Что я делаю не так? Содержание файлов и лог админки под катом.
Нашёл временное решение. В файл _build/resolvers/resolve.tables.php вбить прямой запрос к БД. Может кто знает правильное решение?
Изначально пробовал так:
Лог админки:
core/components/pluginname/model/schema/pluginname.mysql.schema.xml
_build/resolvers/resolve.table.php
Что я делаю не так? Содержание файлов и лог админки под катом.
Нашёл временное решение. В файл _build/resolvers/resolve.tables.php вбить прямой запрос к БД. Может кто знает правильное решение?
<?php
if ($object->xpdo) {
/* @var modX $modx */
$modx =& $object->xpdo;
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
case xPDOTransport::ACTION_INSTALL:
case xPDOTransport::ACTION_UPGRADE:
$table = $modx->getTableName('msProductData');
$sql = 'ALTER TABLE ' . $table . ' ADD `fieldname` TINYINT(1) UNSIGNED NULL DEFAULT "0";';
$modx->exec($sql);
break;
case xPDOTransport::ACTION_UNINSTALL:
break;
}
}
return true;
Изначально пробовал так:
Лог админки:
Консоль запущена...
Пробуем установить пакет с подписью: pluginname-1.0.3-beta
Пакет найден... сейчас идёт подготовка к его установке.
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
Attempting to preserve files at C:/WebServer/www/modx/assets/components/pluginname into archive C:/WebServer/www/modx/core/packages/pluginname-1.0.3-beta/modCategory/8588a440f49806125fcfa3047da40594.0.preserved.zip
Attempting to preserve files at C:/WebServer/www/modx/core/components/pluginname into archive C:/WebServer/www/modx/core/packages/pluginname-1.0.3-beta/modCategory/8588a440f49806125fcfa3047da40594.1.preserved.zip
Дальше установка не идёт, просто висит всё без каких-либо надписей и предупреждений. В консоли браузера есть такая запись:Failed to load resource: the server responded with a status of 500 (Internal Server Error) http://localhost/modx/connectors/index.php
Как вот посмотреть в чём ошибка, из-за чего 500 статус страницы?core/components/pluginname/model/schema/pluginname.mysql.schema.xml
<?xml version="1.0" encoding="UTF-8"?>
<model package="pluginname" baseClass="msProduct" platform="mysql" defaultEngine="MyISAM" phpdoc-package="pluginname" phpdoc-subpackage="" version="1.1">
<object class="pluginNameField" extends="msProductData">
<field key="fieldname" dbtype="tinyint" precision="1" attributes="unsigned" phptype="boolean" null="true" default="0" />
</object>
</model>
_build/resolvers/resolve.table.php
<?php
if ($object->xpdo) {
/* @var modX $modx */
$modx =& $object->xpdo;
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
case xPDOTransport::ACTION_INSTALL:
case xPDOTransport::ACTION_UPGRADE:
$modelPath = $modx->getOption('pluginname_core_path',null,$modx->getOption('core_path').'components/pluginname/').'model/';
$modx->addPackage('pluginname',$modelPath);
$manager = $modx->getManager();
$manager->addField('pluginNameField', 'fieldname');
break;
case xPDOTransport::ACTION_UNINSTALL:
break;
}
}
return true;
Поблагодарить автора
Отправить деньги
Комментарии: 1
Никто не писал плагины что-ли? :)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.