I\'m transitioning a Kohana application to Symfony2. In Kohana I had to register a custom autoloader to make the framework see my controllers given my preferred directory struct
You can place your controllers wherever you want, just import them in your routing.yml
:
controller:
resource: @MyBundle/Theme/Frontend/Controller/
type: annotation
Of course, this is only an example. You can find more information and plenty of examples on routing here: http://symfony.com/doc/current/book/routing.html
Its not possible using the _controller key of a YAML resource file. This is the Symfony2 code that is executed:
//classes.php, parse method
$try = $b->getNamespace() . '\\Controller\\' . $controller . 'Controller';
if (class_exists($try)) {
return $try . '::' . $action . 'Action';
}
As you can see "Controller" is concatenated after the Bundle namespace. Autoloading will use the namespace as a file path and the controller will never be found.
If your using _Controller your controllers must be under the "Controller" folder that is immediately inside your Bundle directory.