【问题标题】:Symfony2 router - how to call annotation routeSymfony2 路由器 - 如何调用注解路由
【发布时间】:2012-07-05 12:53:12
【问题描述】:

简单的案例。在我的所有应用程序中,我使用 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调用路由?

【问题讨论】:

    标签: symfony routing


    【解决方案1】:

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

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

    【讨论】:

    • 但我想错过它——它已经在@Route 中声明了!那么,为什么我应该做两次呢? ://
    • 因为你是在 yml 中重新声明它;它们是完全不同的设置,彼此一无所知。
    猜你喜欢
    • 2013-09-12
    • 2011-07-18
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    相关资源
    最近更新 更多