2012-07-05 68 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