下划线作为routing.yml中的段分隔符

下划线作为routing.yml中的段分隔符,routing,symfony1,Routing,Symfony1,在symfony项目中,我想使用下划线作为分隔符 用于routing.yml中的参数 Url示例: /article/lorem-1111_45.html 在routing.yml中 rule_sample: url: /article/:info-:datePublished_:id.html param: { module: cms, action: test } options: segment_separators: ['-', '/', '.', '_']

在symfony项目中,我想使用下划线作为分隔符 用于routing.yml中的参数

Url示例: /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\uux:id.html”路由 “:id.html”


有人知道如何实现这个规则吗?

我认为这是symfony中的一个bug


我做了一个失败的测试,并向symfony项目提交了一份测试报告

我认为这是sfRoute.class.php中的一个bug。第683行: 'variable_regex'=>'[\w\d_10;]+'

在PHP中,“w”匹配任何字母数字字符,包括下划线(\),最后一个下划线匹配相同的字符。我已尝试将此行更改为: 'variable_regex'=>'[\A-Za-z\d]+'

现在我可以使用下划线作为分隔符


我没怎么测试过这个。我不知道这是否会破坏任何其他功能(当然),但也许这就是Symfony程序员可以启动此错误的原因。

+1:我自己从来都无法令人满意地获得此错误,我会对解决方案感兴趣。但是请注意,破折号(-)被认为是更利于搜索引擎优化的,尽管你不应该对下划线有太多问题。