Затираются настройки при повторном сохранении

Давно сталкивался с этой проблемой, но всё как-то костылями обходился. Хотелось бы решить как то без оных.
Суть:
В addon.xml заводим настройку json_settings типа hidden
Далее в addons.post.php собираем из кастомных полей(permanent_template.tpl - к примеру тут прописанных) параметры $_POST, обрабатываем и заталкиваем в Registry::set(‘addons.MY_MEGA_ADDON.json_settings’, $MY_MEGA_JSON);

Всё замечательно сохраняется. НО!
Если в последствии сохранить настройки модуля с другой штатной настройкой(input - как вариант),то сия настройка json_settings благополучно затрётся.

Хотя $_POST параметры будут переданы, приняты и так же обработаны и даже записаны. Так как вызов следом за Registry::set кода Registry::get даёт положительный результат.

Как быть и куда с этим беч?!
Спасибо.

Вместо registry::set используйте

$storefront_id = 0;
if (fn_allowed_for('ULTIMATE')) {
    if (fn_get_runtime_company_id()) {
        $storefront_id = StorefrontProvider::getStorefront()->storefront_id;
    }
}
$settings_manager = Settings::instance(['storefront_id' => $storefront_id]);
$settings_manager->updateValue('json_settings', $MY_MEGA_JSON);

(!) Не тестировано

1 лайк

Абсолютно рабочий вариант! Спасибо.

1 лайк