@P747

Symfony — разделение на модули?

Добрый день!

Как в Symfony разделить на модули. Если с контроллерами более-менее понятно, через "kernel.request" обработчик свой, с сервисами тоже. Но как сделать чтобы в каждом отдельном модули были миграции Doctrine, сущности, переводы и т.д., тоесть стандартный набор папок в src?

Пример структуры:

{имя модуля}:
	backend:
		controllers
		services
		entities
		migrations
		repositories
		templates
		translations
	frontend:
		controllers
		services
		entities
		migrations
		repositories
		templates
		translations
  • Вопрос задан
  • 790 просмотров
Решения вопроса 2
myks92
@myks92
Нашёл решение — пометь вопрос ответом!
Варианта два:

1. Разделить модули на бандлы
2. Разделить папками.

Первый способ достаточно популярный. Можете найти много вариантов на гидхаб, например Sylius. Но, я думаю, вам больше нужен второй. Создаете папку Model (Доменная модель). Туда помещаете весь доменный слой, в том чиле сущности и репозитории.
App\:
    resource: '../src/*'
    exclude: '../src/{DependencyInjection,Model/User/Entity,Model/Work/Entity,Migrations,Tests,Kernel.php}'

User и Work Модули.

Репозитории:
App\Model\User\Entity\User\UserRepository: ~
App\Model\Work\Entity\Members\Group\GroupRepository: ~
App\Model\Work\Entity\Members\Member\MemberRepository: ~
App\Model\Work\Entity\Projects\Role\RoleRepository: ~
App\Model\Work\Entity\Projects\Project\ProjectRepository: ~
App\Model\Work\Entity\Projects\Task\TaskRepository: ~


В переводах просто добавляйте 'translation_domain' => 'user' и ваш файл в переводах будет user.ru.yaml. Подробнее есть в документации.

Пример проекта есть на гитхабе
Ответ написан
passionkillah
@passionkillah
Backend-разработчик
Можно действительно разделить приложение на бандлы, хотя разработчики Symfony не рекомендуют такую структуру проекта, начиная с 4 версии.

Лично я бы сделал разделение по доменному слою: для каждой сущности выделял бы по сервису + репозиторию. А контроллеры бы разграничил просто по уровню доступа, а шаблоны - по папкам. Миграции бы оставил в одном месте в том случае, если БД у вас одна: в противном случае это имеет мало смысла
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы