2010-05-24 31 views
4

在symfony項目中,我想使用下劃線作爲分隔符 作爲routing.yml中的參數。作爲一個segment_separators在routing.yml中的下劃線

地址例如: /article/lorem-1111_45.html

在routing.yml中

rule_sample: 
url:  /article/:info-:datePublished_:id.html 
param: { module: cms, action: test } 
options: 
    segment_separators: ['-', '/', '.', '_'] 
requirements: 
    info: ^([A-Za-z0-9\-]+)$ 
    datePublished: \d+ 
    id: \d+ 

此代碼不工作。我有以下錯誤: 無法解析「/article/:info-:datePublished_:id.html」路線在 附近「:id.html」。

任何人都知道如何實現這個規則?

+0

+1:我從來沒有能夠得到滿意的我自己,會對解決方案感興趣。但請注意,破折號( - )被認爲更適合搜索引擎優化,儘管你不應該在下劃線方面有太多問題。 – Tom 2010-05-24 11:55:15

回答

0

我相信這是symfony中的一個bug。

我做了一個測試失敗並提交了bug report與測試symfony的項目

1

,我認爲是在sfRoute.class.php的錯誤。行683: 'variable_regex'=> '[\ W \ d _] +'

在PHP \ W 「匹配任何字母數字字符,包括下劃線(_)」 和最後下劃線匹配相同的。我試圖改變這條線: 'variable_regex'=>'[\ A-Za-z \ d] +'

現在我可以使用下劃線作爲分隔符。

我還沒有測試過這麼多。我不知道這是否會崩潰任何其他功能(當然),但也許這是Symfony程序員可以啓動此錯誤的行。