Всем привет! Может немного вне тематики ресурса Yii, но применять буду в Yii, поэтому прошу помочь.
Как делаются Настройки различных разделов? Например, настройки сайта, настройки уведомлений, настройки доступа в зависимости от оплаты, настройки отображения тех или иных блоков и так далее.
Как сделать Настройки я более менее представляю, но всего остального возникают сомнения. Ведь эти Настройки нужны как в бизнес-логике, так и в отображении, так и в правах доступа. И все это смешивается в большую кашу в голове.
В проекте я больше использую чистый pho ООП, без особой привязки к фреймворку, поэтому, компоненты и глобальные данные не очень подходят. Там, где использую пакеты фреймворка делаю обертку и абстракцию. Затем определяю через DI контейнер. Хотелось бы во настройках тоже применить такой подход, но не знаю с чего начать.
Так же все полноценные блоки кода у меня разделены на отдельные модули. Иногда есть зависимость одного модуля от другого. Решаю через абстракцию и DI.
Что мне нужно:
1. Доступность пользователю модуля только после его оплаты.
2. Так как Тарифов будет несколько, то будет доступен не весь функционал модуля или модулей. В зависимости от тарифа пользователь получает определенный функционал. Я так понимаю, что это реализовывается через RBAC
3. Какие уведомления присылать и куда: на почту, телефон, в систему.
4. Настройки доступа профиля: показывать телефон, показывать всем дату рождения, Настройки приватности...
5. Расчёт цены участия в мероприятии может быть разный. Для этого в системе будет несколько классов калькуляторов вложенных друг в друга, которые будут по разному рассчитывать цену учитывая Настройки мероприятия. Здесь пока тоже не стыкуется. Как это хранить в базе используемый калькулятор? Использовать класс объекта?
Интересует не только код, но и база. Сильно не ругайте. Не могу сформировать понятные вопросы так как с подобными вещами не сталкивался.
Я уверен, что подобные вещи уже есть и используются в других проектах. Ведь уведомления и рассылки есть в любой системе, где есть пользователи. Тарифы есть во многих интернет магазинах. Расчёт цены тоже в интернет магазинах может использоваться. Настройки есть даже в Yii форуме. Перед отправкой вопроса внизу есть Настройки «Сообщить мне о получении ответа». Вот как это ремлизуется?) Через события? А как хранится эта настройка?)
Не на столько глуп, но хочется всегда делать более правильно. И следую принципу 7 раз отмерь один раз отрежь. Поэтому и задаюсь такими вопросами и спрашиваю у профи. Кашекод и кашебазу всегда успею сделать
Желательно описать и ссылаться на примеры с открытым кодом, чтобы можно было посмотреть реализацию.
Заранее всех благодарю!)
Как делают раздел настроек?
-
- Сообщения: 147
- Зарегистрирован: 2017.11.15, 23:54
Re: Как делают раздел настроек?
1. Либо AccessControl + Rule с Yii::$app->user->can('module.feature'), либо свой фильтр.
2. Полями в тарифе.
3. Полями в User.
4. Полями в Profile.
5. Полем type в мероприятии с именем класса или строковым названием.
Пример фильтра есть в https://yiiconf.ru/ru/offers/offer/248
2. Полями в тарифе.
3. Полями в User.
4. Полями в Profile.
5. Полем type в мероприятии с именем класса или строковым названием.
Пример фильтра есть в https://yiiconf.ru/ru/offers/offer/248
-
- Сообщения: 147
- Зарегистрирован: 2017.11.15, 23:54
Re: Как делают раздел настроек?
Благодарю за ответ в очередной раз!) А я думал под каждую сущность надо создавать отдельную таблицу настроек. Не будет ли избыточна таблица в таком случае? Ведь у пользователя могут быть не только Настройки, но и различные поля-счетчики. В итоге эта же таблица User будет отвечать за все и полей будет много...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
В остальном вроде бы все понятно.
Re: Как делают раздел настроек?
По-хорошему – для каждого модуля по смыслу делать свою сущность вместо одной общей User на всех. Тогда избыточности не будет.
-
- Сообщения: 147
- Зарегистрирован: 2017.11.15, 23:54
Re: Как делают раздел настроек?
Да, про это у вас читал и как-то на форуме обсуждали с вами. Неполучаеься везде создать эту отдельную сущность на каждый модуль. Нужен везде один профиль и одинаковый код модуля user. А копировать все это в разных модулях не имеет смысла. Плюс таблиц будет много. Сложновато) Поэтому, модули получаются лишь для разделения и минимальной зависимости. Иногда три модуля объединяю в один общий. И получается что три отдельных модуля зависят от одного глобального.
В целом понял) Благодарю! Приятно смотреть ваш код и уроки!)