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

Symfony2路由器-如何调用注释路由,symfony,routing,Symfony,Routing,简单的例子。在我的all应用程序中,我正在使用Route annotation driver,在routing.yml中定义如下: MyBundle: resource: "@MyBundle/Controller/" type: annotation prefix: /someprefix MyBundle的Ctrl控制器中的某些操作如下所示: @Route("/{page}/{status}", name="default_action", defaul

简单的例子。在我的all应用程序中,我正在使用Route annotation driver,在
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()”要求您为“$page”参数提供一个值(因为没有默认值,或者因为此参数后面有一个非可选参数)。

因此,Symfony2并没有从@Route annotation获取默认值


问题是:如何为知道@route的
\u welcome
调用route?

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

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

但是我想错过它-它已经在@Route中声明了!那我为什么要做两次呢/因为你在用yml声明它;他们是完全不同的环境,彼此一无所知。