Избавляемся от ошибки «modAction support is deprecated» в старых пакетах
Если у вас есть дополнение, которое вы делали ещё на первой версии modExtra, то при его установке сейчас вы будете видеть такое сообщение об ошибке:
Исправить её не сложно, но раньше всё не доходили руки.
1. Находим файл-контроллер (simpleUpdater/core/components/simpleupdater/index.class.php), меняем в нём название класса на simpleUpdaterIndexManagerController и вносим прямо в него все методы из контроллера home (getPageTitle, loadCustomCssJs и getTemplateFile). Убираем слово abstract.
2. В файле simpleUpdater/_build/data/transport.menu.php меняем action на просто index (до этого там будет массив — array('controller' => 'index')). Удаляем всё, что связано с modAction. В массив для modMenu добавляем параметр namespace.
3. В файле simpleUpdater/_build/build.transport.php находим блок с BUILD_MENU_UPDATE и удаляем из него RELATED_OBJECTS и RELATED_OBJECT_ATTRIBUTES.
После этого меняем номер версии, changelog и собираем новый пакет.
Вот все изменения на одной странице: github.com/ilyautkin/simpleUpdater/commit/9e95decbd61a24025e2576aa1aff68a34469274e
UPD. Если на сайте стояла старая версия и пункт меню уже существовал, то эти действия пункт меню не поменяют. Чтобы при обновлении всё было ок, нужно добавить в папку _build/resolvers/ файл resolve.fixmenu.php:
И добавить новый резолвер в список резолверов (файл _build/build.config.php):
Вот эти изменения: github.com/ilyautkin/simpleUpdater/commit/cfad412ba4db0e9707306a25c072ef5babf39a9c
modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace simpleupdater to the routing based system.
Исправить её не сложно, но раньше всё не доходили руки.
1. Находим файл-контроллер (simpleUpdater/core/components/simpleupdater/index.class.php), меняем в нём название класса на simpleUpdaterIndexManagerController и вносим прямо в него все методы из контроллера home (getPageTitle, loadCustomCssJs и getTemplateFile). Убираем слово abstract.
2. В файле simpleUpdater/_build/data/transport.menu.php меняем action на просто index (до этого там будет массив — array('controller' => 'index')). Удаляем всё, что связано с modAction. В массив для modMenu добавляем параметр namespace.
3. В файле simpleUpdater/_build/build.transport.php находим блок с BUILD_MENU_UPDATE и удаляем из него RELATED_OBJECTS и RELATED_OBJECT_ATTRIBUTES.
После этого меняем номер версии, changelog и собираем новый пакет.
Вот все изменения на одной странице: github.com/ilyautkin/simpleUpdater/commit/9e95decbd61a24025e2576aa1aff68a34469274e
UPD. Если на сайте стояла старая версия и пункт меню уже существовал, то эти действия пункт меню не поменяют. Чтобы при обновлении всё было ок, нужно добавить в папку _build/resolvers/ файл resolve.fixmenu.php:
<?php
if ($object->xpdo) {
$modx =& $object->xpdo;
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
case xPDOTransport::ACTION_INSTALL:
break;
case xPDOTransport::ACTION_UPGRADE:
if ($menu = $modx->getObject('modMenu', [
'text' => 'simpleupdater',
'namespace' => 'core'
])) {
$data = [
'namespace' => 'simpleupdater',
'action' => 'index'
];
$menu->fromArray($data);
$menu->save();
}
break;
case xPDOTransport::ACTION_UNINSTALL:
break;
}
}
return true;
И добавить новый резолвер в список резолверов (файл _build/build.config.php):
// ...
$BUILD_RESOLVERS = array(
'tables',
'chunks',
'fixmenu', // Новый резолвер
);
Вот эти изменения: github.com/ilyautkin/simpleUpdater/commit/cfad412ba4db0e9707306a25c072ef5babf39a9c
Комментарии: 12
Илья, подскажите пожалуйста.
У меня установлен SimpleUpdater
Но когда я в админке нажимаю «Пакеты — Обновление MODX» у меня вылетает 500 ошибка.
В логе:
Также, когда я жму на корзину ресурсов(управление удаленными ресурсами) вылетает «Доступ запрещён».
Из меню исчезла консоль (Console)
Переустановки не помогают =(
Это связанные проблемы?
Началось всё буквально на днях, как я понимаю. Вышло много обновлений. Обновился.
И, к сожалению, поздно заметил. Бэкап уже сильно не свежий будет =(
У меня установлен SimpleUpdater
Но когда я в админке нажимаю «Пакеты — Обновление MODX» у меня вылетает 500 ошибка.
В логе:
ERROR in modManagerRequest::prepareResponse @ ...../core/model/modx/modmanagerrequest.class.php : 187) modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace simpleupdater to the routing based system.
Также, когда я жму на корзину ресурсов(управление удаленными ресурсами) вылетает «Доступ запрещён».
Из меню исчезла консоль (Console)
Переустановки не помогают =(
Это связанные проблемы?
Началось всё буквально на днях, как я понимаю. Вышло много обновлений. Обновился.
И, к сожалению, поздно заметил. Бэкап уже сильно не свежий будет =(
Не знаю… Я такого не замечал.
Если найдёшь, в чём причина — отпиши, пожалуйста, постараюсь исправить, если дело в моём дополнении.
Если найдёшь, в чём причина — отпиши, пожалуйста, постараюсь исправить, если дело в моём дополнении.
SimpleUpdater сам починился, каким-то образом. А проблема с удалением ресурсов и Console была связана с тем, что у админа, почему-то галочка «неограниченные права» в профиле снялась… вроде и рад, что нашёл причину, но теперь паранойя, почему она снялась=)
SimpleUpdater подтягивает архив modx с сайта Уткина. Может быть он там починился
Нет, уже давно качается с официального источника: github.com/ilyautkin/simpleUpdater/blob/master/core/components/simpleupdater/processors/mgr/version/update.class.php#L23
Илья, привет. В логах такое:
[2019-03-28 23:40:55] (ERROR in xPDO::getService @ /www/core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:40:55] (ERROR in modRestCurlClient::__construct @ /core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:40:55] (ERROR in xPDO::getService @ /core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:40:55] (ERROR in modRestCurlClient::__construct @ core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:00] (ERROR in modManagerRequest::prepareResponse @ core/model/modx/modmanagerrequest.class.php : 187) modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace autoredirector to the routing based system.
[2019-03-28 23:41:07] (ERROR in xPDO::getService @ /core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:07] (ERROR in modRestCurlClient::__construct @ /core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:07] (ERROR in xPDO::getService @ /core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:07] (ERROR in modRestCurlClient::__construct @ /core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:18] (ERROR in xPDO::getService @ /core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:18] (ERROR in modRestCurlClient::__construct @ /core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:18] (ERROR in xPDO::getService @ /core/xpdo/xpdo.class.php : 1234) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
[2019-03-28 23:41:18] (ERROR in modRestCurlClient::__construct @ /core/model/modx/rest/modrestcurlclient.class.php : 26) modRestClient::__construct is deprecated since version 2.3.0. Use the modRest classes instead.
При установке AutoRedirrector такое:Консоль запущена...
Пробуем установить пакет с подписью: autoredirector-1.0.1-rc
Пакет найден... сейчас идёт подготовка к его установке.
Загрузка рабочего пространства пакета...
Рабочее пространство загружено, сейчас устанавливаем пакет...
Skipping vehicle object of class modMenu (data object exists and cannot be upgraded); criteria: Array ( [text] => autoredirector )
Attempting to preserve files at /assets/components/autoredirector into archive /core/packages/autoredirector-1.0.1-rc/modCategory/5acdab8008716224b7db95693c4c1458.0.preserved.zip
PHP notice: A non well formed numeric value encountered
Attempting to preserve files at /core/components/autoredirector into archive /core/packages/autoredirector-1.0.1-rc/modCategory/5acdab8008716224b7db95693c4c1458.1.preserved.zip
PHP notice: A non well formed numeric value encountered
Успешно установлен пакет autoredirector-1.0.1-rc
при обновлении simpleUpdater как раз эта ошибка и вылетает
modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace collections to the routing based system.
Добрый день!
Вот от этого как избавиться?
«modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace core to the routing based system»
Вот от этого как избавиться?
«modAction support is deprecated since version 2.3.0. Support for modAction has been replaced with routing based on a namespace and action name. Please update the extra with the namespace core to the routing based system»
хотелось бы именно избавиться, а не выключить отображение в настройках
Это может сделать только автор проблемного дополнения, выпустив новую версию. Всем остальным остаётся только ждать момента, когда можно будет установить новую версию.
log_deprecated в системных настройках можно отключить и все.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.