2011-09-19 66 views
2

我剛剛下載symfony2,我開始玩通過註釋路由。我在我創建的使用註釋的包中設置了app/config/routing.yml,並刪除了Acme包和所有到它的路由引用。這就是說,我試圖在我的控制器中創建幾個不同的路由註釋,如@Route(「/」)@Route(「/ hello/{name}」)但我總是用404錯誤(使用開發環境)。如果我在routing.yml中添加路由,即使將路由配置爲使用註釋,它也可以正常工作。無論出於何種原因,我的註釋似乎都被忽略了。symfony2路由與註釋不工作

這裏是我的應用程序/配置/ routing.yml中:

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

這裏是我的控制器方法:

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

我已經包括了Sensio公司\包\ FrameworkExtraBundle \配置\路徑命名空間 - 盡我所知,所有內容都與我在文檔中看到的一致。我忽略了什麼導致symfony2看起來忽略了我的路由註釋?同樣,如果我將路由添加到路由yaml,一切正常,因此我的捆綁正在工作 - 但註釋似乎被忽略。

謝謝!

UPDATE: 它看起來像我不得不添加路由除了routing_dev.yml到的routing.yml因爲我在開發環境中運行。我想那是因爲你在開發和生產之間有不同的路線。我想要特別注意確保這些路線保持同步?

+2

小心我看來,像你從routing_dev.yml中刪除了包含routing.yml。 – Raffael

+0

確實如此。我需要加回: _main: resource:routing.yml – Dan

回答

4

您意外地從routing_dev.yml中刪除了包含routing.yml

1

,如果你在你的routing.yml使用路由前綴

您必須聲明你的前綴上面類聲明那樣:

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

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

等進入 Sensio FrameworkExtra Bundle Documentation