我正在开发一个快速增长的应用程序,这会导致越来越多的控制器随着时间推移而且我总是试图保持良好的实践,因为每个控制器没有那么多行。现在在Controller
目录中有近40个控制器,当需要添加代码或编辑或其他东西时,它有点复杂,所以我想在{{1}下的子文件夹中进行思考目录如下:
Controller
但是重新排序导致我的应用程序出现此错误:
FileLoaderLoadException:无法导入资源 " /var/www/html/project.dev/src/AppBundle/Controller /"从 " /var/www/html/projectdev/app/config/routing.yml" ;. (类 AppBundle \ Controller \ EmpresaController不存在)
因为当Symfony不在src\
AppBundle\
Controller\
Comunes\
CiudadController.php
DuplicadosCedulaController.php
...
RegistroUsuarios\
EmpresaController.php
NaturalController.php
...
RPNI\
CodigoArancelarioController.php
RPNIProductoPaso1Controller.php
...
BuscarEmpresaController.php
DistribuidorController.php
...
目录上时,显然无法找到控制器类。我找到了this主题,但我不清楚问题是什么。我不知道这是否可行我在Symfony docs上阅读Controller Naming Pattern但是没有那么有帮助。对此有何建议?解决方法?建议更好的项目结构组织?
注意:我只创建了一个捆绑包因为没有多于一个捆绑,因为应用程序不适用于单独的捆绑包,所以在Syfmony Best Practices后我只附带一个捆绑包
修改
这很奇怪,而且我不知道所有控制器是如何工作的,我已将所有控制器从Controller
移动到该目录中的子文件夹,如上面的示例所示,并且没有。在Controller
上没有任何改变,Symfony即使在子文件夹中也会继续获取控制器:太棒了!啊,非常重要只记得 CLEAR CACHE 命令,我相信最重要的Symfony命令,很多开发人员问题都是这个原因,我忘了完成清除它并测试更改!!
答案 0 :(得分:1)
这是一个有效的例子:
路由:
st_mainsiteweb_admin_subsite_create_template:
path: /subsite/create-template
defaults:
_controller: STMainSiteWebBundle:Admin/SubSite:createTemplate
目录结构:
ST\
MainSiteWebBundle\
Controller\
Admin\
SubSiteController -> createTemplateAction
这是你在寻找吗?
答案 1 :(得分:1)
我做2小时,现在没问题,没有路由,没有其他文件。
只需更改
的命名空间即可CiudadController.php
DuplicadosCedulaController.php
....
从AppBundle \ Controller到AppBundle \ Controller \ Comunes
答案 2 :(得分:0)
我从未尝试过,所以这只是一个理论上的答案。如果你想让像这样的控制器完全没问题,那么你应该对它们进行映射in the routing。
Controller\
Comunes\
CiudadController.php
DuplicadosCedulaController.php
然后匹配路由yaml:
comunes:
resource: "@yourBundle/Controller/Comunes"
type: annotation
等等每个不同的目录。据我所知,它们是从Controller /目录自动加载的,但是如果你将它们放在任何其他地方,你需要在路由中引用它们。