I made a new Symfony2 bundle and deleted the Acme bundle.
Then I created a new Controller (MainController.php
):
<?php namespace MyBlogBundleController; class MainController extends Controller { /** * @Route("/", name="index") * @Template() */ public function indexAction() { return array(); }
And a simple view: (Main/index.html.twig
) which only contains a hello
. My routing.yml is empty. When I run the whole project I get:
No route found for "GET /" 404 Not Found - NotFoundHttpException 1 linked Exception: ResourceNotFoundException ยป
What is wrong here and how to solve it?
Here is my routing debug:
Symfony>php app/console router:debug [router] Current routes Name Method Pattern _wdt ANY /_wdt/{token} _profiler_search ANY /_profiler/search _profiler_purge ANY /_profiler/purge _profiler_info ANY /_profiler/info/{about} _profiler_import ANY /_profiler/import _profiler_export ANY /_profiler/export/{token}.txt _profiler_phpinfo ANY /_profiler/phpinfo _profiler_search_results ANY /_profiler/{token}/search/results _profiler ANY /_profiler/{token} _profiler_redirect ANY /_profiler/ _configurator_home ANY /_configurator/ _configurator_step ANY /_configurator/step/{index} _configurator_final ANY /_configurator/final
I also cleared the cache with no success.
Here is the routes.yml:
my_blog: resource: "@MyBlogBundle/Resources/config/routing.yml" prefix: /
and the routing.yml in MyBlogBundle/Resources/config/routing.yml
is empty.
Advertisement
Answer
The way your routes.yml
is setup, you are requesting the routing.yml
file from your bundle.
If you want to use annotations to manage the routes in your bundle, you have to write the routes.yml
the following way:
my_blog: resource: "@MyBlogBundle/Controller/MainController.php" prefix: / type: annotation
And your controller needs to include the Route
class from the FrameworkExtraBundle
:
<?php namespace MyBlogBundleController; use SymfonyBundleFrameworkBundleControllerController; use SensioBundleFrameworkExtraBundleConfigurationRoute; use SensioBundleFrameworkExtraBundleConfigurationTemplate; class MainController extends Controller { /** * @Route("/", name="index") * @Template() */ public function indexAction() { return array(); } }
This assumes you have installed the SensioFrameworkExtraBundle
(http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html#installation).
More information on the route annotation: http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/annotations/routing.html