2013-11-01 26 views
1

我成功創建了重定向到我的路由,如果頁面爲1,重定向到沒有URL參數頁面的主控制器。 (dublicate內容的SEO預防)。所以我有這條路線規則:Symfony2,路由autoredirect,也自動生成新的路徑,這有可能嗎?

default_blog: 
    path: /            
    defaults: { _controller: AcmeBlogBundle:Default:index, page: 1} 

default_blog_page_first: 
    path:  /page/1 
    defaults: 
     _controller: FrameworkBundle:Redirect:redirect 
     route: default_blog 
     permanent: true 

default_blog_page: 
    path:  /page/{page} 
    defaults: { _controller: AcmeBlogBundle:Default:index} 
    requirements: 
     page: \d+ 

它的工作,在我的分頁。如果我點擊我的第一頁(/ page/1),我將被重定向到/,但它有可能已經在生成路徑中轉換了嗎?只是,如果default_blog_page將有參數page = 1它會自動轉換爲default_blog

所以,我的分頁會是這樣的:

URL => Page 
------------------- 
/=> 1 , /page/2 => 2 

在任何樹枝模板:

path('default_blog_page', {'page': 1}) 

如果檢測頁面= 1時,它會自動更改爲:

path('default_blog') 

這可能嗎?

回答

2

好吧我想我明白你想要做什麼,是的,這是可能的!

這裏是訣竅。這段代碼編輯default_blog_page路線:

default_blog_page: 
path:  /{type}/{page} 
defaults: { _controller: AcmeBlogBundle:Default:index, type: "page", page: 1} 
requirements: 
    page: \d+ 
    type: page 

有了這條路,如果你設置的頁面PARAM,它會自動添加默認的類型值,「網頁」,但如果它的默認值,它不會。 儘管您可以刪除重定向路由,因爲此路由處理所有情況。

希望這會有所幫助:)

+0

哦yeeaaah !!它的工作原理非常有用,非常感謝你。如果可以的話,我會給你1千萬個REP,但是我不能:(非常感謝你提供了非常好的技巧,並且對於遲到的答案我感到抱歉。 –