Есть несколько групп параметров настроек, которые необходимо редактировать.
Пример параметров
-- Partner
- percent_deduction
- minimum_withdraw
-- Yandex_Money
- bill
- secret_key
Как можно грамотно реализовать редактирование/использование данных настроек?
Пока вижу такой вариант:
1. Создать таблицу
settings, с полями:
- module - имя группы настроек
- data - параметры настроек в JSON
2. Создать модель, на которой навесить поведение конвертации данных в JSON на
beforeSave, и конвертацию из JSON в объект на
afterFind()
3. Редактирование будет проводиться в отдельной форме, созданную под настройку.
4. Загрузка параметров будет навешана на bootstrap, который будет получать все настройки и записывать их в params, в ячейку с именем названия группы настроек. Т.е: Yii::$app->params['partner']['percent_deduction']. Также можно добавить кэш, который будет при изменениях в настройках сбрасываться.
Но не нравится этот метод из-за:
1. Магия в формах. По-сути, только форме известны реальные имена настроек. Что-то вроде:
2. Неудобность использования параметров, опять таки очень легко допустить ошибку и постоянно придётся подглядывать настройки в форме.
Ещё на ум приходит вариант создать отдельные классы настроек, и создать поведение на основе Symfony Serializer, но пока не придумал что к чему и решил поинтересоваться, ведь возможно есть уже грамотные варианты, которые можно глянуть.