【问题标题】:Symfony2 Routing optional parameter with trailing slash带有斜杠的 Symfony2 路由可选参数
【发布时间】:2013-11-20 20:40:16
【问题描述】:

我正在尝试使用 Symfony2 编写我的第一个应用程序。这是一个相当简单的游戏,只是为了习惯使用 Symfony2,但是路由让我很烦。

我使用 YAML 进行路由,并且有以下路由:

upload:
    path: /{_locale}/upload/{currentGameType}/
    defaults:  { _controller: BaseAcmeBundle:Default:upload, currentGameType: gameName, _locale: nl }
    requirements:
        _locale: nl|en

currentGameType 是可选的,始终为“gameName”,如果未设置,则为默认游戏。

所以当去en/upload 时,路由upload: 被忽略,我收到了找不到路由的消息

例如,当我去en/upload/gameName 时,路线确实有效,并且游戏类型设置为gameName。为什么这个参数不想是可选的?

所以.. 我完全迷失了过去的几个小时,希望得到一些帮助/指点。

提前致谢。

编辑:因此,在发布几分钟后,我发现路由中没有尾随斜杠它确实有效。但是知道这一点仍然是一个问题。

【问题讨论】:

    标签: symfony parameters routing yaml optional


    【解决方案1】:

    只需创建第二条路径:

    upload_bare:
        path: /{_locale}/upload/
        defaults:  { _controller: BaseAcmeBundle:Default:upload, _locale: nl }
        requirements:
            _locale: nl|en
    

    请注意,在您的函数中,默认情况下应该有 gameName = null 并且它应该是您的最后一个参数。

    【讨论】:

      猜你喜欢
      • 2012-04-22
      • 2015-09-07
      • 1970-01-01
      • 1970-01-01
      • 2012-04-05
      • 2011-03-23
      • 2013-05-25
      • 2019-05-22
      • 2014-11-23
      相关资源
      最近更新 更多