Как импортировать ресурсы из заданной структуры каталогов контроллера в Symfony2

Я работаю над приложением, которое быстро растет и которое со временем вызывает все больше и больше контроллеров, и я всегда стараюсь придерживаться хороших методов, поскольку на контроллер приходится не так много строк. Сейчас почти 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, я считаю, многие из проблем разработчиков являются причиной этого, я забыл завершить, чтобы очистить ее и проверить изменения !!

3

Решение

Вот рабочий пример:

маршрутизации:

st_mainsiteweb_admin_subsite_create_template:
path: /subsite/create-template
defaults:
_controller: STMainSiteWebBundle:Admin/SubSite:createTemplate

структура каталогов:

ST\
MainSiteWebBundle\
Controller\
Admin\
SubSiteController -> createTemplateAction

Это ты ищешь?

1

Другие решения

Я делаю это 2 часа, теперь все в порядке, нет маршрутизации, нет другого файла.

Просто измените пространство имен

CiudadController.php
DuplicadosCedulaController.php
....

из AppBundle \ Controller в AppBundle \ Controller \ Comunes

1

Я никогда не пробовал, так что это просто теоретический ответ. Если вы хотите, чтобы такие контроллеры были в порядке, то вам нужно их отобразить. в маршрутизации.

Controller\
Comunes\
CiudadController.php
DuplicadosCedulaController.php

Тогда будет сопоставлено в маршрутизации yaml:

comunes:
resource: "@yourBundle/Controller/Comunes"type: annotation

И так для каждого отдельного каталога. Насколько я знаю, они автоматически загружаются из каталога Controller /, но если вы разместите их в любом другом месте, вам нужно сослаться на них в маршрутизации.

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector