首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >区分歧义路径的Symfony路由

区分歧义路径的Symfony路由
EN

Stack Overflow用户
提问于 2019-05-07 14:06:19
回答 1查看 89关注 0票数 0

我对Symfony路由有个问题。尽管我在两个不同路由的路径中使用了不同的参数,Symfony将其标识为一个模式,并将其定向到路由文件中首先定义的路径。对于ex:

代码语言:javascript
运行
复制
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和连字符。在第二个参数中,只有一个参数,即菜肴。但是当我尝试加载一个菜肴(第二条路线)时,它会将我引导到餐厅路径,它有一个与菜肴相似的路径。

另一方面,下面的路线也被确定为类似于餐厅的路线。

代码语言:javascript
运行
复制
app_restaurants_by_cuisine_letter:
    path:     /london-restaurants/cuisine/{cuisine}-{letter}.html
    defaults: { _controller: AppBundle:Restaurants:index}

单词'cuisine‘被标识为'{id}’,而'{cuisine}-{letter}‘被标识为'{restaurant_name}’。

我该如何解决这个问题呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-07 14:19:28

您应该在路由定义Adding {wildcard} Requirements中添加一些要求

代码语言:javascript
运行
复制
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}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56016429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档