Symfony 路由器上的可选文本

Optional text on Symfony router

我正在尝试使用 Symfony 路由器,但无法实现我的目标。

我确实想在此路径中添加一个可选文本,尤其是 /page-{page}。所以我问是否有可能对相同的路由器路径有两种可能性,如下所示:

routing.yml:

utm_forum_forum:
    path:     /forum/{id}/page-{page}
    defaults:
        _controller: UTMForumBundle:Forum:forum
        page: 1
    requirements:
        id: \d+
        page: \d+

感谢阅读,如果我不够清楚我可以重新解释:)

utm_forum_forum:
    path:     /forum/{id}/page-{page}
    defaults: { _controller: UTMForumBundle:Forum:forum, page: null }

因此,如果您请求 /forum/15/page- 将在 {page} 参数中为您提供 null。

不知道是不是你需要的

您需要为所有可能的配置添加路由。

因此,如果您的页面 slug 是可选的,您的路由 table 应该类似于:

utm_forum_forum_default:
    path:     /forum/{id}
    defaults:
        _controller: UTMForumBundle:Forum:forum
        page: 1
    requirements:
        id: \d+

utm_forum_forum:
    path:     /forum/{id}/page-{page}
    defaults:
        _controller: UTMForumBundle:Forum:forum
    requirements:
        id: \d+
        page: \d+

当 page slug 完全省略时,应该提供第 1 页的默认值,或者在 ID 后需要 page-N 形式的内容。