url - Symfony2 url层次结构

标签 url symfony routes hierarchy router

我想知道什么是拥有分层结构化 url 的最佳方法,例如:

如果我有 3 个类别

-Cateogory1
--Category2
---Category3

我希望 url 解析为

/category1
/category1/category2
/category1/category2/category3

我还使用 jms_i18n_routes 来支持路由中的语言环境。我已经启用了 SymfonyExtraBundle。我现在看到的唯一方法就是创建一个新路由器并将其添加到路由器列表中,但问题是 jms_i18_router 扩展了 symfony 默认路由器,所以如果我这样做,我将能够所有默认路由都有国际化的 url,但这个自定义路由器没有,这意味着我必须将我已经拥有的功能复制到新路由器中(毫无意义)

此外,如果我为类别层次结构添加此路由器,除了我想要此功能的类别之外,我可能还必须为不同的实体类型设置不同的版本(或者有一个巨大的 if 语句来检查每个场景) - 这两种解决方案对我来说都不是很优雅,所以我想知道您对此事有何看法? 谢谢!

最佳答案

您可以通过设置路由重复模式来做到这一点,在路由的“要求”部分使用正则表达式,类似于:

# categories rout:
categories:  
    pattern:       /{cat}  
    defaults:      { _controller: HelloBundle:Default:categories }  
    requirements:
        cat:       (category[1-9]\/)+ 

注意事项:

您应该在“categoriesAction”函数的 $cat 变量上识别斜杠。

当然,如果您想从非 ascii 字符创建动态分层 URL,并从持久实体创建此 URL,我认为您可以通过从 ascii 实体字段(例如实体 ID 或其他实体特殊键)创建 URL 来做到这一点.

关于url - Symfony2 url层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15354384/

相关文章:

javascript - 当 % 字符出现在 url 中时出现问题

java - 使用 HttpsURLConnection 忽略 ssl 证书的方法

php - 从 obj c 的 URL 中删除 %2520 和其他非标准字符

url - 我的亚马逊 s3 存储桶 URL 是什么?如何将许多文件上传到 s3 存储桶?

php - Symfony 创建的网站的自动化 GUI 测试

ruby-on-rails - 在Rails中记录默认路由的使用

http - URL 过期概念的优缺点

symfony - symfony2链式选择器

javascript - 如何在服务器响应后在 Symfony2 中显示警报或信息消息而不重新加载页面

javascript - URL 哈希显示为 url.com/something#/而不是 url.com/something/#/