Ошибка при добавлении плагина товара
Ребята, добрый день!
Никак не могу понять в чем ошибка. Добавил через плагин свойство товара (наличие). И постоянно получаю ошибку:
Вот код плагина:
index.php
Спасибо!
Ребята, неужели никто не может подсказать,хоть куда копать!!!
Никак не могу понять в чем ошибка. Добавил через плагин свойство товара (наличие). И постоянно получаю ошибку:
[2018-04-05 11:49:50] (ERROR @ C:\OpenServer\domains\antikmagaz-new.ru\core\components\minishop2\model\minishop2\minishop2.class.php : 558) PHP warning: Invalid argument supplied for foreach()
Не могу понять почему? Должен быть массив, а его нет!Вот код плагина:
index.php
<?php
return array (
'xpdo_meta_map' => array (
'msProductData' => require_once dirname(__FILE__) .'/model/msproductdata.map.inc.php',
),
'manager' => array (
'msProductData' => MODX_ASSETS_URL . 'components/minishop2/plugins/nalichie/msproductdata.js',
),
);
msproductdata.map.inc.php<?php
return array (
'fields' => array (
'availability' => 1,
)
,'fieldMeta' => array (
'availability' => array (
'dbtype' => 'tinyint',
'precision' => '1',
'attributes' => 'unsigned',
'phptype' => 'boolean',
'null' => false,
'default' => 1,
),
),
);
msproductdata.jsminiShop2.plugin.availability = {
getFields: function(config) {
return {
availability: {xtype: 'xcheckbox', description: '<b>[[+availability]]</b><br />'+_('ms2_product_availability_help'),inputValue: 1,checked: parseInt(config.record.availability || 1)}
}
}
,getColumns: function() {
return {
availability: {width:50, sortable:true, editor: {xtype:'combo-boolean', renderer:'boolean'}}
}
}
};
А это на что он ссылается (558 строка):if (isset($this->modx->map[$class])) {
foreach ($map as $key => $values) {
$this->modx->map[$class][$key] = array_merge($this->modx->map[$class][$key], $values);
}
}
Подскажите, пожалуйста куда копать??? Спасибо!
Ребята, неужели никто не может подсказать,хоть куда копать!!!
Комментарии: 10
Вчера с такой же проблемой столкнулся. Не нашли решение?
Добавлено через пару минут: Только стоило написать как нашел решение проблемы)) Плагин лежал в папке /core/components/minishop2/plugins в документации сказано, что это устаревший способ и я всё же разместив файлы там сделал вторым способом (через API). Но только стоило переместить файлы плагина из папки plugins как ошибка ушла и начали добавляться товары в корзину (до этого не добавлялись).
Добавлено через пару минут: Только стоило написать как нашел решение проблемы)) Плагин лежал в папке /core/components/minishop2/plugins в документации сказано, что это устаревший способ и я всё же разместив файлы там сделал вторым способом (через API). Но только стоило переместить файлы плагина из папки plugins как ошибка ушла и начали добавляться товары в корзину (до этого не добавлялись).
Тоже столкнулся с такой проблемой, удалил файлы плагина из папки, но ошибка не исчезла.
Возьмем например такую иерархию в дереве каталогов проекта:
Давайте попробуем туда записать данные за вместо квадратных скобок, поместим массив json:
На Вашем же примере надо просто выполнить код в консоле, который будет помещать массив в плагин cart
pluginsИ рассмотрим пример системной настройки ms2_plugins: []
|_cart
|_|_availability
|_|_|_index.php
|_order
|_|_custom_modules
|_|_|_index.php
|_|_deliverytime
|_|_|_index.php
Давайте попробуем туда записать данные за вместо квадратных скобок, поместим массив json:
{
"cart": {"availability": "{core_path}components/minishop2/plugins/cart/availability/index.php"},
"order": {
"custom_modules": "{core_path}components/minishop2/plugins/order/custom_modules/index.php",
"deliverytime": "{core_path}components/minishop2/plugins/order/deliverytime/index.php"
}
}
Работает, отлично!На Вашем же примере надо просто выполнить код в консоле, который будет помещать массив в плагин cart
<?php
$plugins = [
'cart' => ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php']
];
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin($plugins);
}
И Вы увидите в системной настройке ms2_plugins массив-json со следующем содержимом:{"cart": {"availability": "{core_path}components/minishop2/plugins/cart/availability/index.php"}}
Точнее так будет более правильнее:
$plugin = ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php'];
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('cart', $plugin);
}
На всякий случай если не заработает, то
// удаляем плагин
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->removePlugin('cart');
}
// добавляем вновь
$plugin = '{core_path}components/minishop2/plugins/cart/availability/index.php';
if ($miniShop2 = $modx->getService('miniShop2')) {
$miniShop2->addPlugin('availability', $plugin);
}
// результат в ms2_plugins: {"availability":"{core_path}components\/minishop2\/plugins\/cart\/availability\/index.php"}
/* Вложенность иерархии в дереве и подключение, тоже имеют значение:
plugins
|_cart
|_|_availability
|_|_|_index.php
|_|_|_msproductdata.map.inc.php
*/
Этот вопрос написан почти четыре года назад! Зачем на него отвечать?
Возможно человек нашёл решение проблемы и решил поделиться с теми, кто будет решать такую же. В любом случае, чем больше решённых вопросов в сообществе, тем лучше.
Да, и главное не надо боятся переименовывать, переносить папки и файлы указывая правильные пути на сервере, а также переименовывать результат в ms2_plugins, чтобы не трогать бэкапы.
SELECT * FROM `modx_system_settings` WHERE `key` LIKE 'ms2_plugins'
Привет, лично у меня при разработке ушло на это время, и я не смог понять, почему если я регистрирую плагин относительно пути
/plugins/order/custom_modules/index.php
И вдруг захотел сменить путь на более удобный /plugins/custom_fields/index.php
У меня появляется эта ошибка, сразу задался вопросом, а как же происходит регистрация плагинов, но ответа не нашел, поэтому и решил проблему таким способом/plugins/custom_fields/ms2/index.php
Странно, но работает))
Разумеется, если в настройке ms2_plugins была бы возможность добавлять плагины просто через запятую (например ms2_plugins: availability, custom_modules, deliverytime и т.д., которые подключены напрямую из папки plugins/), то отпали бы такие заметки, и деактивация плагинов проходила бы глаже при регистрации того же плагина в другое место.
Надеюсь на то, что в minishop3 появится такая возможность из коробки.
Надеюсь на то, что в minishop3 появится такая возможность из коробки.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.