Reputation: 14684
I made a new Symfony2 bundle and deleted the Acme bundle.
Then I created a new Controller (MainController.php
):
<?php
namespace My\BlogBundle\Controller;
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.
Upvotes: 7
Views: 56388
Reputation: 16044
For others troubleshooting the situation where the router annotations is correctly installed, but the routes aren't working, you may need to install
composer require symfony/apache-pack
Upvotes: 3
Reputation: 491
You also could declare your routing for your annotation with:
blog_index:
path: /
defaults: {_controller:BlogBundle:index}
in your BlogBundle/config/routing.yml
and in root, set
blog:
resource: "@BlogBundle/Resources/config/routing.yml"
prefix: /
then in your MainController, the annotation should work:
..use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/", name="blogindex")
*/
Upvotes: 1
Reputation: 406
you'r problem is that you have referenced the routing as yml not annotations, if you want to use annotations you must declare at your front route att the app folder as
post:
resource: "@AcmeBlogBundle/Controller/PostController.php"
type: annotation
and at the PostController class you define
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/")
*/
class MainController extends Controller
{
}
and the function
/**
* @Route("/add", name="article_add")
*/
public function add(){
...
}
See the referance at the docs
Upvotes: 0
Reputation: 11762
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 My\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Template;
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
Upvotes: 13
Reputation: 152216
Add following annotation for the MainController
class:
/**
* @Route("/")
*/
class MainController extends Controller
{
}
Upvotes: 0