Что нужно изменить в modExtra чтоб не было modAction support is deprecated?
Собираюсь писать новый компонент и как всегда на основе modExtra. Но он давно не обновлялся, а в MODX 2.7 что-то изменили и появляется сообщение
UPD 29.01.2019
Разобрался :) В общем в modExtra менять ничего не нужно.
Посмотрел код modmenu.class.php.
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 organizations to the routing based system.Что в MODX 2.7 поменяли и что нужно поменять в modExtra?
UPD 29.01.2019
Разобрался :) В общем в modExtra менять ничего не нужно.
Посмотрел код modmenu.class.php.
public function rebuildCache($start = '') {
...
$menus = $this->getSubMenus($start);
....
public function getSubMenus($start = '') {
...
/* 2.2 and earlier support */
$c->leftJoin('modAction','Action');
$c->select(array(
'action_controller' => 'Action.controller',
'action_namespace' => 'Action.namespace',
));
...
// allow 2.2 and earlier actions
$deprecatedNamespace = $menu->get('action_namespace');
if (!empty($deprecatedNamespace)) {
$this->xpdo->deprecated('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 ' . $deprecatedNamespace . ' to the routing based system.', 'modAction support');
$namespace = $deprecatedNamespace;
}
if ($namespace != 'core') {
$this->xpdo->lexicon->load($namespace.':default');
}
Ошибка modAction support is deprecated выбрасывается при построении кеша всех меню. То есть, если на сайте есть старые компоненты с меню, то на них и ругается при сохранении любого меню. В том числе и при установке новых компонентов. У меня на тестовом сайте 4 старых компонента и вот на них и ругалась.
Поблагодарить автора
Отправить деньги
Комментарии: 7
Я это читал перед тем как тему создать :(, но увы нефига не понял :(. Какие-то ссылки на коммиты Tickets, в которые я смотрю и не вижу никаких modAction. Смотрю код build modExtra и тоже не нахожу никаких modAction.
Я в том как генерируется и устанавливается транспортный пакет внутри кода MODX практически ничего не знаю. Просто тупо брал modExtra переименовывал и писал что нужно в нем :). А теперь прямо засада.
Я в том как генерируется и устанавливается транспортный пакет внутри кода MODX практически ничего не знаю. Просто тупо брал modExtra переименовывал и писал что нужно в нем :). А теперь прямо засада.
квест найди отличия этого
<?php
/** @var modX $modx */
/** @var array $sources */
$menus = array();
$tmp = array(
'emailqueue' => array(
'description' => 'emailqueue_menu_desc',
'action' => 'home',
//'icon' => '<i class="icon icon-large icon-modx"></i>',
),
);
foreach ($tmp as $k => $v) {
/** @var modMenu $menu */
$menu = $modx->newObject('modMenu');
$menu->fromArray(array_merge(array(
'text' => $k,
'parent' => 'components',
'namespace' => PKG_NAME_LOWER,
'icon' => '',
'menuindex' => 0,
'params' => '',
'handler' => '',
), $v), '', true, true);
$menus[] = $menu;
}
unset($menu, $i);
return $menus;
от этого
Кто-нибудь может помочь?
Для проверки установил Tickets. На modAction ругается 3 раза. А должно 1 раз на это
if ($action = $modx->getObject('modAction', array('namespace' => 'tickets'))) {
$action->remove();
/** @var modMenu $menu */
if ($menu = $modx->getObject('modMenu', array('text' => 'tickets'))) {
$menu->remove();
}
Похоже наши гуру и сами не знают, что там такого нужно поменять, чтоб не ругалось :)
Разобрался :) В общем в modExtra менять ничего не нужно.
Похоже наши гуру и сами не знают, что там такого нужно поменять, чтоб не ругалось :)Я это тут просто оставлю
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.