【发布时间】:2019-09-24 18:03:16
【问题描述】:
我遇到了 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 和连字符。 在第二个中,只有一个参数是美食。但是,当我尝试加载美食(第 2 条路线)时,它会将我引导到与美食具有相似路径的餐厅路径。
另一方面,以下路线也被识别为类似于餐厅的路径。
app_restaurants_by_cuisine_letter:
path: /london-restaurants/cuisine/{cuisine}-{letter}.html
defaults: { _controller: AppBundle:Restaurants:index}
单词“cuisine”被识别为“{id}”,“{cuisine}-{letter}”被识别为“{restaurant_name}”。
我该如何解决这个问题?
【问题讨论】:
-
您必须将路线“app_restaurants_by_cuisine”放在“app_restaurants_inner”上方。
-
Mitesh Vasava 是正确的。 订单很重要。将更具体的路线移到另一条上方,你应该没问题...
标签: php symfony routing symfony-3.4 symfony-routing