Я работаю над приложением, которое быстро растет и которое со временем вызывает все больше и больше контроллеров, и я всегда стараюсь придерживаться хороших методов, поскольку на контроллер приходится не так много строк. Сейчас почти 40 контроллеров в Controller
каталог, и это немного сложно найти, когда нужно добавить код или редактировать или что-то еще, так что я думаю, чтобы они внутри подпапок под Controller
каталог следующим образом:
src\
AppBundle\
Controller\
Comunes\
CiudadController.php
DuplicadosCedulaController.php
...
RegistroUsuarios\
EmpresaController.php
NaturalController.php
...
RPNI\
CodigoArancelarioController.php
RPNIProductoPaso1Controller.php
...
BuscarEmpresaController.php
DistribuidorController.php
...
Но этот порядок вызывает эту ошибку в моем приложении:
FileLoaderLoadException: невозможно импортировать ресурс
«/var/www/html/project.dev/src/AppBundle/Controller/» из
«/Var/www/html/projectdev/app/config/routing.yml». (Учебный класс
AppBundle \ Controller \ EmpresaController не существует)
Поскольку, очевидно, Symfony не может найти класс контроллера, когда он не включен Controller
каталог. я обнаружил этот тема но мне не понятно в чем проблема. Я не знаю, возможно ли это или нет, я читаю Шаблон именования контроллеров в Symfony docs, но это не очень полезно. Любой совет по этому поводу? Обходной путь? Предложения по улучшению организации структуры проекта?
Примечание: я сделал только один пакет, потому что не имеет смысла более одного, так как приложение не будет работать для отдельных пакетов, поэтому Syfmony Best Practices Я пришел только с одной связкой
редактировать
Это странно, и я не знаю, как все работает снова, я перенес все контроллеры из Controller
в подпапках внутри этого каталога, как показывает мой пример выше, и ничего не изменилось на routing.yml
и Symfony продолжают получать контроллеры, даже если они находятся в подпапках: потрясающе !! Аааа, очень важно просто запомнить ОЧИСТИТЬ КЭШ команда, самая важная команда Symfony, я считаю, многие из проблем разработчиков являются причиной этого, я забыл завершить, чтобы очистить ее и проверить изменения !!
Вот рабочий пример:
маршрутизации:
st_mainsiteweb_admin_subsite_create_template:
path: /subsite/create-template
defaults:
_controller: STMainSiteWebBundle:Admin/SubSite:createTemplate
структура каталогов:
ST\
MainSiteWebBundle\
Controller\
Admin\
SubSiteController -> createTemplateAction
Это ты ищешь?
Я делаю это 2 часа, теперь все в порядке, нет маршрутизации, нет другого файла.
Просто измените пространство имен
CiudadController.php
DuplicadosCedulaController.php
....
из AppBundle \ Controller в AppBundle \ Controller \ Comunes
Я никогда не пробовал, так что это просто теоретический ответ. Если вы хотите, чтобы такие контроллеры были в порядке, то вам нужно их отобразить. в маршрутизации.
Controller\
Comunes\
CiudadController.php
DuplicadosCedulaController.php
Тогда будет сопоставлено в маршрутизации yaml:
comunes:
resource: "@yourBundle/Controller/Comunes"type: annotation
И так для каждого отдельного каталога. Насколько я знаю, они автоматически загружаются из каталога Controller /, но если вы разместите их в любом другом месте, вам нужно сослаться на них в маршрутизации.