0

简单的案例。在我的所有应用程序中,我使用 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 注释中获取默认值。

问题是:如何调用_welcome知道@Route 的路由?

4

1 回答 1

0

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

_welcome:
    pattern:  /
    defaults: { _controller: MyBundle:Ctrl:default, page: 1, status: ok }
于 2012-07-05T12:58:05.510 回答