gurehbgui
gurehbgui

Reputation: 14684

Why is my Symfony route is not working?

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

Answers (5)

Acyra
Acyra

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

aurny2420289
aurny2420289

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

Sofien Benrhouma
Sofien Benrhouma

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

cheesemacfly
cheesemacfly

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

hsz
hsz

Reputation: 152216

Add following annotation for the MainController class:

/**
 * @Route("/")
 */
class MainController extends Controller
{
}

Upvotes: 0

Related Questions