Как делают раздел настроек?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
myks1992@mail.ru
Сообщения: 147
Зарегистрирован: 2017.11.15, 23:54

Как делают раздел настроек?

Сообщение myks1992@mail.ru »

Всем привет! Может немного вне тематики ресурса Yii, но применять буду в Yii, поэтому прошу помочь.

Как делаются Настройки различных разделов? Например, настройки сайта, настройки уведомлений, настройки доступа в зависимости от оплаты, настройки отображения тех или иных блоков и так далее.

Как сделать Настройки я более менее представляю, но всего остального возникают сомнения. Ведь эти Настройки нужны как в бизнес-логике, так и в отображении, так и в правах доступа. И все это смешивается в большую кашу в голове.

В проекте я больше использую чистый pho ООП, без особой привязки к фреймворку, поэтому, компоненты и глобальные данные не очень подходят. Там, где использую пакеты фреймворка делаю обертку и абстракцию. Затем определяю через DI контейнер. Хотелось бы во настройках тоже применить такой подход, но не знаю с чего начать.

Так же все полноценные блоки кода у меня разделены на отдельные модули. Иногда есть зависимость одного модуля от другого. Решаю через абстракцию и DI.

Что мне нужно:
1. Доступность пользователю модуля только после его оплаты.
2. Так как Тарифов будет несколько, то будет доступен не весь функционал модуля или модулей. В зависимости от тарифа пользователь получает определенный функционал. Я так понимаю, что это реализовывается через RBAC
3. Какие уведомления присылать и куда: на почту, телефон, в систему.
4. Настройки доступа профиля: показывать телефон, показывать всем дату рождения, Настройки приватности...
5. Расчёт цены участия в мероприятии может быть разный. Для этого в системе будет несколько классов калькуляторов вложенных друг в друга, которые будут по разному рассчитывать цену учитывая Настройки мероприятия. Здесь пока тоже не стыкуется. Как это хранить в базе используемый калькулятор? Использовать класс объекта?

Интересует не только код, но и база. Сильно не ругайте. Не могу сформировать понятные вопросы так как с подобными вещами не сталкивался.

Я уверен, что подобные вещи уже есть и используются в других проектах. Ведь уведомления и рассылки есть в любой системе, где есть пользователи. Тарифы есть во многих интернет магазинах. Расчёт цены тоже в интернет магазинах может использоваться. Настройки есть даже в Yii форуме. Перед отправкой вопроса внизу есть Настройки «Сообщить мне о получении ответа». Вот как это ремлизуется?) Через события? А как хранится эта настройка?)

Не на столько глуп, но хочется всегда делать более правильно. И следую принципу 7 раз отмерь один раз отрежь. Поэтому и задаюсь такими вопросами и спрашиваю у профи. Кашекод и кашебазу всегда успею сделать

Желательно описать и ссылаться на примеры с открытым кодом, чтобы можно было посмотреть реализацию.

Заранее всех благодарю!)
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как делают раздел настроек?

Сообщение ElisDN »

1. Либо AccessControl + Rule с Yii::$app->user->can('module.feature'), либо свой фильтр.
2. Полями в тарифе.
3. Полями в User.
4. Полями в Profile.
5. Полем type в мероприятии с именем класса или строковым названием.

Пример фильтра есть в https://yiiconf.ru/ru/offers/offer/248
myks1992@mail.ru
Сообщения: 147
Зарегистрирован: 2017.11.15, 23:54

Re: Как делают раздел настроек?

Сообщение myks1992@mail.ru »

ElisDN писал(а): 2019.05.08, 17:54 1. Либо AccessControl + Rule с Yii::$app->user->can('module.feature'), либо свой фильтр.
2. Полями в тарифе.
3. Полями в User.
4. Полями в Profile.
5. Полем type в мероприятии с именем класса или строковым названием.

Пример фильтра есть в https://yiiconf.ru/ru/offers/offer/248
Благодарю за ответ в очередной раз!) А я думал под каждую сущность надо создавать отдельную таблицу настроек. Не будет ли избыточна таблица в таком случае? Ведь у пользователя могут быть не только Настройки, но и различные поля-счетчики. В итоге эта же таблица User будет отвечать за все и полей будет много...

В остальном вроде бы все понятно.
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как делают раздел настроек?

Сообщение ElisDN »

По-хорошему – для каждого модуля по смыслу делать свою сущность вместо одной общей User на всех. Тогда избыточности не будет.
myks1992@mail.ru
Сообщения: 147
Зарегистрирован: 2017.11.15, 23:54

Re: Как делают раздел настроек?

Сообщение myks1992@mail.ru »

ElisDN писал(а): 2019.05.08, 22:57 По-хорошему – для каждого модуля по смыслу делать свою сущность вместо одной общей User на всех. Тогда избыточности не будет.
Да, про это у вас читал и как-то на форуме обсуждали с вами. Неполучаеься везде создать эту отдельную сущность на каждый модуль. Нужен везде один профиль и одинаковый код модуля user. А копировать все это в разных модулях не имеет смысла. Плюс таблиц будет много. Сложновато) Поэтому, модули получаются лишь для разделения и минимальной зависимости. Иногда три модуля объединяю в один общий. И получается что три отдельных модуля зависят от одного глобального.

В целом понял) Благодарю! Приятно смотреть ваш код и уроки!)
Ответить