Yii2 универсальный модуль для advanced и basic

Выкладываем свои наработки
Ответить
Аватара пользователя
maleks
Сообщения: 1845
Зарегистрирован: 2012.12.26, 12:56

Yii2 универсальный модуль для advanced и basic

Сообщение maleks » 2019.12.09, 17:43

Приветствую.
Создал структуру универсального yii2 модуля.

Цель:
  • Создание самодостаточных и переносимых модулей
  • Модуль логически разделяет свои компоненты на backend и frontend части
  • Модуль легко установится как на Advanced так и на Basic шаблоны приложений
  • Подключив такой модуль вы сразу добавляете на свой сайт и backend и frontend страницы
  • На Basic шаблоне модуль достаточно один раз подключать
  • Есть функционал как поставить защиту доступа всем backend контроллерам - получим админку
Т.е. если вы взялись за некий функционал и чувствуете что он может пригодиться вам в других проектах, можете сгруппировать его в виде такого модуля.
Если вам даже не захочется публиковать свои такие наработки в опенсорс, думать о расширяемости и гибкости, то вы все равно легко сможете стартануть с него новую версию функционала, просто автоматически заменив пространства имен и переписав отличающиеся части.

ps1. Имеется документация на русском
ps2. По мотивам ссылка1 и ссылка2
Yii2 universal module sceleton - for basic and advanced templates

Аватара пользователя
maleks
Сообщения: 1845
Зарегистрирован: 2012.12.26, 12:56

Re: Yii2 универсальный модуль для advanced и basic

Сообщение maleks » 2020.01.25, 10:17

Новости:
  1. Исправлен один баг
  2. Улучшена структура
    Теперь модулю можно настраивать базовый namespace для его контроллеров.
    Это позволит брать контроллеры с других модулей - "наследовать" их.
    Также можно настроить и базовый путь для виевсов
  3. Написаны тесты
  4. Созданы по этому шаблону два модуля.
    Второй из них как раз демонстрирует как можно легко переопределить функционал своего родительского модуля, при этом взяв его контроллеры
Т.е. на примерах из пункта 4 мы проверили насколько удобна схема, когда:
  • создаем какой то свой модуль с нужным функционалом
  • получаем готовые страницы для backend и frontend частей приложения
  • делаем модуль настолько гибким и расширяемым насколько надо, используя DI, SOLID, Layers, подмену views и т.д.
  • а в производных модулях уже можем настраивать на то что отвечает текущим конкретным условиям.
    Например возьмем вышеупомянутый модуль AR категорий, организованных иерархически:
    • Модуль жестко не завязан на все поля у этой AR модели
    • Добавив, например, два поля - title и url можно сделать меню сайта, управляемое из админки
Yii2 universal module sceleton - for basic and advanced templates

Ответить