2017-08-14 64 views
1

我想用Symfony路由器的东西,但我不能实现我的目标。Symfony路由器上的可选文本

事实上,我想为此路径添加可选文本,特别是对于/page-{page}。所以我问是否有可能有两种可能性同一路由器路径,像下面这样的:

  • /主题/(编号)
  • /主题/ {ID}/{页面级页}

的routing.yml:

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

感谢您的阅读,如果我不是很清楚,我可以重新解释:)

回答

1

您需要为所有可能的配置包含路由。

所以,如果你的页面蛞蝓是可选的,您的路由表应该是这个样子:

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+ 

这应该提供第1页的默认值时,完全省略了页面塞,或者需要在东西在ID后面输入page-N

+0

非常感谢您的帮助,我想到了这个解决方案,但我并不真正了解这种可行性。 –

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

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

不知道它是否需要

+0

谢谢你的回答。 我已经为页面参数定义了一个默认值,问题不存在,我想使'page-'选项为了得到没有页码的干净链接。 –

+0

然后,您可以创建两个路由,一个使用'page-',另一个不使用它,它们都指向相同的控制器,并在url上没有'page-'的情况下将默认“页面”值设置为null。 –

+0

这就是我所做的。谢谢 ! –