2017-08-14 77 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

這就是我所做的。謝謝 ! –