我对Symfony路由有问题。即使我在两个不同路由的路径中使用不同的参数,Symfony仍将其识别为一个模式并定向到在路由文件中首先定义的路径。 例如:
app_restaurants_inner:
path: /london-restaurants/{id}/{restaurant_name}.html
defaults: { _controller: AppBundle:Restaurants:inner}
app_restaurants_by_cuisine:
path: /london-restaurants/cuisine/{cuisine}.html
defaults: { _controller: AppBundle:Restaurants:index}
第一条路线会加载特定的餐厅,其参数为ID和餐厅名称。餐厅名称仅包含a-z,0-9和连字符。 在第二个参数中,只有一个参数是美食。但是,当我尝试加载美食(第二条路线)时,它会将我定向到餐厅路线,该路线与美食路线相似。
另一方面,还确定了以下路线,类似于餐厅的路径。
app_restaurants_by_cuisine_letter:
path: /london-restaurants/cuisine/{cuisine}-{letter}.html
defaults: { _controller: AppBundle:Restaurants:index}
“美食”一词被标识为“ {id}”,“ {cuisine}-{letter}”被标识为“ {restaurant_name}”。
我该如何解决?
答案 0 :(得分:3)
您应该在路线定义Adding {wildcard} Requirements
中添加一些要求app_restaurants_inner:
path: /london-restaurants/{id}/{restaurant_name}.html
defaults: { _controller: AppBundle:Restaurants:inner}
requirements:
id: '\d+'
app_restaurants_by_cuisine:
path: /london-restaurants/cuisine/{cuisine}.html
defaults: { _controller: AppBundle:Restaurants:index}