2015-08-28 87 views
2

在一个Symfony的控制器我使用注释只匹配的URI像的Symfony @ROUTE(“/(编号)”)正则表达式的要求不工作

.../integer-integer 
or 
.../integer 

我的代码

/** 
* @Route("/notification/old/{id}", requirements={"id" = "(^\d+$)|(^\d+\-\d+$)"}) 
* @Method("GET") 
*/ 

根据结束Regex101我的模式是正确的。 然而,Symfony的返回找到的 “GET /通知/老/ 1-1”
未找到路线

没有路由 “/ GET /通知老/ 1”

我是什么做错了?

+0

也许,它不会帮助,但是请注意,您可以将正则表达式编写为'^ \ d +(?: - \ d +)?$'。 –

+0

大声笑的工作。 在我的理解或操作符不工作在symfony。 因为他们拥有的'^ \ d + $'和'^ \ d + \ - \ d + $'确实有效。 – wxkin

回答

1

正则表达式应该导致问题。你可以摆脱交替,捕获组,并将其简化为

^\d+(?:-\d+)?$ 

这1个或多个数字从一个字符串的开头匹配,然后选择性地匹配一个连字符和1个或多个数字高达字符串的结尾。