2012-07-05 70 views
0

簡單的情況。在我所有的應用程序我使用的路線標註驅動程序,在routing.yml定義如下:Symfony2路由器 - 如何調用註釋路由

MyBundle: 
    resource: "@MyBundle/Controller/" 
    type:  annotation 
    prefix: /someprefix 

在MyBundle的Ctrl鍵控制器中的一些操作是這樣的:

@Route("/{page}/{status}", name="default_action", defaults={"page" = 1, "status" = "ok"}, requirements={"page" = "\d+"}) 
public function defaultAction($page, $status) {...} 

現在我要做出這個動作 - 默認在訪問我的網頁時採取行動。我不能只用@Route("/"),因爲我是前綴。所以我增加了routing.yml

_welcome: 
    pattern:/
    defaults: { _controller: MyBundle:Ctrl:default } 

並且存在的問題開始 - Symfony2的呼籲沒有從註釋只是從操作的控制器默認的動作,我得到錯誤:

Controller "...:defaultAction()" requires that you provide a value for the "$page" argument (because there is no default value or because there is a non optional argument after this one).

所以只是Symfony2沒有從@Route註解獲取默認值。

問題是:如何知道@Route的_welcome路由?

回答

0

你已經錯過了在陽明設置默認值,應該是這樣的:

_welcome: 
    pattern:/
    defaults: { _controller: MyBundle:Ctrl:default, page: 1, status: ok } 
+0

但我不想錯過它 - 它在@Route已經聲明!那麼,爲什麼我應該做兩次? :/ – cadavre 2012-07-05 13:11:26

+2

因爲你在yml中重新聲明它;他們是完全不同的設置,彼此不知道任何事情。 – Inoryy 2012-07-05 13:20:51