Ошибка использования shopFeatureModel
Я разрабатываю свой плагин для приложения shop
в файле install.php я хочу создать новый тип товара и добавить для него свои кастомные характеристики
У меня вазникает циклическая ошибка при вызове модели shopFeatureModel
$shopFeatureModel = new shopFeatureModel();
Я получаю ошибку
Warning: Invalid argument supplied for foreach() in D:\OSPanel\domains\webasyst.loc\wa-system\database\waDbMysqliAdapter.class.php on line 436
причем она сыпется очень много раз, и просто на странице в админке и в логах, при этом блокируя работу всего фреймворка

Что я делаю не правильно, возможно нужны какие то параметры при создании объекта модели, или есть ограничения при вызове его из файла install.php плагина.
Полный код файла install.php
<?php try { $type_id = 0; $type_name = 'Товары натали'; $plugin_id = 'natali'; $plugin = wa('shop')--->getPlugin('natali'); $shopTypeModel = new shopTypeModel(); $type = $shopTypeModel->getByName($type_name); // Создаем новый тип товара if (!$type) { $data = array( 'name' => $type_name, 'icon_url' => 'https://promo.natali37.ru/app/uploads/2022/09/Icon-16-round.png', ); $type_id = $shopTypeModel->insert($data); $settings['typeId'] = $type_id; $plugin->saveSettings($settings); } $shopFeatureModel = new shopFeatureModel(); } catch (waException $e) { }
7 ответов
В версии Shop-Script 9.2.2 не удаётся получить такой результат. Попробуйте поотлаживать код в том месте, где возникает ошибка (посмотрите стек вызовов функций и методов), чтобы точно убедиться, что проблема связана именно с данным, а не каким-то другим плагином.
к сожалению ошибка не показывает стек вызовов, только эта ошибка что указана выше
в файле wa-log/error.log вообще ничего нет
Не надо так делать в install.php (и файлах обновлений)
При этом создаётся новый инстанс плагина, система видит, что install.php ещё не отработал и запускает его.
А как тогда тут получать обьект плагина, что бы можно было сохранить в настройках id созданового типа товаров?
Можно не создавать объект. Записывайте настройки напрямую в таблицу настроек.
Вроде как-то так.
Убрав инициализацию плагина
Я устранил бесконечный цикл, и теперь плагин не ломает сайт))
Но 1 предупреждение при вызове модели shopFeatureModel все ровно получаю уже не критично, но не приятно,
Последний вопрос хотел оставить тут, есть ли у кого ссылка или пример кода, как правильно создавать характеристики товара, если они кастомные, цвета свои, размеры свои, из которых потом нужно будет делать модификацию товара.
Документация достаточно скудная, залез в реализацию модели shopFuater нашел метод добавляющий характеристику и некоторые параметры которые нужно прокидывать массивом, но почему то не работает
Возможно, вам будет проще понять логику, если вы посмотрите код контроллера wa-apps/shop/lib/actions/settings/typefeat/shopSettingsTypefeatFeatureSave.controller.php, который сохраняет свойства характеристики в настройках магазина.