2011-09-19 2 views
2

Je viens de télécharger symfony2 et je commence à jouer avec le routage via les annotations. J'ai mon app/config/routing.yml dans le paquet que j'ai créé pour utiliser les annotations, et j'ai supprimé le paquet Acme et toutes les références de routage. Cela dit, j'ai essayé de créer quelques annotations de route différentes dans mon contrôleur comme @Route ("/") et @Route ("/ bonjour/{nom}") mais je suis toujours accueilli avec un 404 erreur (en utilisant l'environnement de développement). Si j'ajoute la route dans routing.yml cela fonctionne très bien même si le routage est configuré pour utiliser des annotations. Pour une raison quelconque, mes annotations sont apparemment ignorées.routage symfony2 avec les annotations ne fonctionnant pas

Voici mon app/config/routing.yml:

DanDefaultBundle: 
    resource: "@DanDefaultBundle/Controller/" 
    type:  annotation 
    prefix: /

Et voici ma méthode de commande:

/** 
* @Route("/") 
* @Template() 
*/ 
public function indexAction() 
{ 
    return array('name' => 123); 
} 

J'ai inclus le Sensio \ Bundle \ FrameworkExtraBundle \ Configuration \ Route namespace - tout ce que je peux dire est correct avec ce que j'ai vu dans la documentation. Qu'est-ce que je néglige qui fait que symfony2 ignore apparemment mes annotations de routage? Encore une fois, si j'ajoute les routes au routage yaml tout fonctionne donc mon paquet fonctionne - mais les annotations semblent être ignorées.

Merci!

Dan

MISE À JOUR: Il semble que je devais ajouter les routes à routing_dev.yml en plus routing.yml depuis que je fonctionnais dans l'environnement de dev. Je suppose que vous avez des voies différentes entre le développement et la production? Je suppose que des précautions spéciales devront être prises pour s'assurer que ces routes restent synchronisées?

+2

me semble que vous avez accidentellement supprimé l'inclusion de routing.yml de routing_dev.yml. – Raffael

+0

C'était bien cela. J'avais besoin de rajouter: _main: ressource: routing.yml – Dan

Répondre

4

Vous avez accidentellement supprimé l'inclusion de routing.yml de routing_dev.yml.

1

si vous utilisez Route Prefix dans votre routing.yml

vous devez déclarer votre préfixe au-dessus de votre déclaration de classe comme ça:

/** 
* @Route("/") 
*/ 
class PostController extends Controller 
{ 
    /** 
    * @Route("/") 
    * @Template() 
    */ 
    public function indexAction() 
    { 
    } 

    /** 
    * @Route("{id}") 
    * @Template() 
    */ 
    public function showAction($id) 
    { 
    } 
} 

Comme dans Sensio FrameworkExtra Bundle Documentation

Questions connexes