自定义控制器目录结构Symfony2

自定义控制器目录结构Symfony2,symfony,Symfony,我正在将Kohana应用程序转换为Symfony2。在Kohana中,我必须注册一个定制的自动加载程序,以使框架能够看到给定我首选目录结构的控制器。Symfony2中是否有一种优雅的方法可以实现到“Controller”目录级别较低的控制器的路由。例如Src/Somename/aBundle/Theme/Frontend/Controller/defaultController.php您可以将控制器放置在任何需要的地方,只需将它们导入您的routing.yml: controller:

我正在将Kohana应用程序转换为Symfony2。在Kohana中,我必须注册一个定制的自动加载程序,以使框架能够看到给定我首选目录结构的控制器。Symfony2中是否有一种优雅的方法可以实现到“Controller”目录级别较低的控制器的路由。例如Src/Somename/aBundle/Theme/Frontend/Controller/defaultController.php

您可以将控制器放置在任何需要的地方,只需将它们导入您的
routing.yml

controller:
    resource: @MyBundle/Theme/Frontend/Controller/
    type: annotation

当然,这只是一个例子。您可以在这里找到有关路由的更多信息和大量示例:

使用YAML资源文件的_controller键是不可能的。这是执行的Symfony2代码:

//classes.php,解析方法

 $try = $b->getNamespace() . '\\Controller\\' . $controller . 'Controller'; 
 if (class_exists($try)) {
      return $try . '::' . $action . 'Action';
 }
正如您所看到的,“Controller”连接在Bundle名称空间之后。自动加载将使用名称空间作为文件路径,并且永远找不到控制器


如果您正在使用_Controller,则您的控制器必须位于捆绑包目录中的“Controller”文件夹下。

Ok,我添加了正确的资源字符串,现在它找到了我的controllers命名空间。但是我仍然不知道如何创建路由,以便它连接到控制器。例如,routing.yml中路由的_controller参数是什么样子的?编辑,好的,我知道了。非常感谢。愚蠢的我,我没有将注释添加到控制器:)例如:/***@Route(“/test”)*/但是有没有一种方法可以使用yaml而不是注释来进行这样的自定义路由?这取决于
routing.yml
定义中的
类型。如果需要,您可以使用
\u控制器
,但我建议使用注释,因为它更清晰、更易于维护。此外,通过使用
routing.yml
中的
前缀
,您可以避免将
@Route
注释放在控制器本身中。也许我错了,但在使用(基于错误消息)控制器参数时,会立即在bundle目录下搜索控制器。但是我将对type属性进行更多的实验。感谢您的帮助,不管怎样,注释似乎是一个更好的系统。