Простой способ реализовать модульную структуру Laravel-проекта

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

Опишу вкратце самый простой способ, с помощью которого я разделил проект пополам. В моём случае это были админка и личный кабинет пользователя.

Это не потребует подключения новых пакетов, перестройки директорий фреймворка и вот этого всего. Всё сводится к следущему:

  1. создаём два или более файлов с маршрутами в директории routes;
  2. в файле routes/web.php подключаем эти два файла через require(_once);
  3. в этих новых файлах описываем маршруты для соответствующих функциональных блоков (например, в файле для админки, описываем роуты админки);
  4. далее создаём контроллеры (в отдельных пространствах!) и вьюшки для админки и личного кабинета отдельно.

Всё. Может быть есть и другие варианты, но для простого случая вполне хватит вот такого разделения на основе контроллеров+видов+роутов. Хотя термин «модуль» в этом случае весьма условен, ведь это не самостоятельные подключаемые библиотеки, а всё ещё неотъемлемые части проекта.

Большой плюс этого подхода — простота реализации, и он вполне подходит для большинства типовых случаев.

Большой минус, который, впрочем, легко решаем — по началу придётся столкнуться с дублированием больших объёмов кода «модулей», который отвечает за одни и те же операции (например, изменение модели в админке и кабинете).

Дублирующиеся виды (например, табличный вывод одних и тех же моделей) следует выносить в отдельные подключаемые (переиспользуемые) файлы. Одинаковый функционал следует размазать по CRUD-политикам моделей, сервис-провайдерам и прочим сущностям фреймворка, чтобы суть контролеров была проста и ясна.

Опубликовано
В рубрике blog Отмечено ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *