Symfony路由匹配异常:/api/recette/sub-recette未触发对应控制器
问题原因
Symfony 路由采用从上到下的顺序匹配机制,当请求/api/recette/sub-recette时,首先匹配到/api/recette/{id}这条路由——sub-recette被识别为{id}参数的合法值,因此直接触发recetteById方法,不会继续匹配后续路由。
解决方法
方案1:调整路由顺序
将固定路径的recette.subRecette路由放在带参数的recette.recetteById路由之前,让Symfony优先匹配明确的固定路径:
recette.subRecette: path: /api/recette/sub-recette controller: App\Controller\RecetteController::subRecette recette.recetteById: path: /api/recette/{id} controller: App\Controller\RecetteController::recetteById
方案2:给{id}参数添加匹配约束
如果id仅为数字类型,可通过正则约束限制{id}的匹配范围,这样sub-recette就不会被误识别为id参数:
recette.recetteById: path: /api/recette/{id} controller: App\Controller\RecetteController::recetteById requirements: id: '\d+' # 约束id只能是数字
内容的提问来源于stack exchange,提问作者Sinay
相关产品推荐
相关产品推荐

