Php 如何从Symfony2中给定的控制器目录结构导入资源

Php 如何从Symfony2中给定的控制器目录结构导入资源,php,symfony,directory-structure,Php,Symfony,Directory Structure,我正在开发一个快速发展的应用程序,随着时间的推移,它会导致越来越多的控制器,我一直在努力保持良好的实践,因为每个控制器没有那么多的线路。目前,在Controller目录中有将近40个控制器,在需要添加代码、编辑或其他内容时,找到一个控制器有点复杂,因此我想在Controller目录下的子文件夹中对它们进行排序,如下所示: src\ AppBundle\ Controller\ Comunes\ CiudadContr

我正在开发一个快速发展的应用程序,随着时间的推移,它会导致越来越多的控制器,我一直在努力保持良好的实践,因为每个控制器没有那么多的线路。目前,在
Controller
目录中有将近40个控制器,在需要添加代码、编辑或其他内容时,找到一个控制器有点复杂,因此我想在
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上读过,但没有那么大的帮助。有什么建议吗?解决办法?关于更好的项目结构组织的建议

注意:我只制作了一个bundle,因为应用程序不适用于单独的bundle,所以我只制作了一个bundle

编辑


这很奇怪,我不知道一切又是如何工作的,我已经将所有控制器从
控制器
移动到该目录中的子文件夹中,如我上面的示例所示,并且在
路由上没有任何更改。yml
和Symfony不断获得控制器,即使它们在子文件夹中:太棒了!!啊,非常重要,请记住清除缓存命令,我相信这是最重要的Symfony命令,许多开发人员的问题都是导致此问题的原因,我忘记了清除它并测试更改

我从未尝试过,所以这只是一个理论上的答案。如果你想要像这样的控制器,这是非常好的,但是你需要映射它们

然后将在路由yaml中匹配:

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

对于每个不同的目录,依此类推。据我所知,它们是从控制器/目录自动加载的,但如果将它们放在任何其他位置,则需要在路由中引用它们。

以下是一个工作示例:

路由:

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

我不会测试您的解决方案,也许它可以工作,但由于我的代码再次开始工作,我会给您打分,请查看我的edition@ReynierPM自从我使用Sylius源代码以来,我就在其中看到了这种技术。。但是你的解决方案很奇怪,仔细检查它是否正常工作,即使它现在正在工作..已经检查过了,我现在正在处理它,添加了一些东西,还有更多,我测试并重新测试它,但不要担心,如果出现任何错误,我会回到这里
CiudadController.php
DuplicadosCedulaController.php
....