Symfony2路由器 - 如何调用注释路由

时间:2012-07-05 12:53:13

标签: symfony routing

简单的案例。在我的所有应用程序中,我使用的是Route注释驱动程序,在routing.yml中定义如下:

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的路由?

1 个答案:

答案 0 :(得分:0)

您错过了yml设置中的默认值,应该如下所示:

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