Symfony2 url层次结构

时间:2013-03-12 06:03:04

标签: url symfony routes hierarchy router

我想知道最好的方法是建立一个分层的结构化网址,例如:

如果我有3个类别

-Cateogory1
--Category2
---Category3

我希望网址解析为

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

我也在使用jms_i18n_routes来支持路由中的区域设置。我已启用SymfonyExtraBundle。我现在看到的唯一方法就是创建一个新的路由器并将其添加到路由器列表中,但问题是jms_i18_router扩展了symfony默认路由器,所以如果我这样做,我将能够拥有国际化的URL对于所有默认路由但不适用于此自定义路由器,这意味着我必须将我已有的功能复制到新路由器中(非常无意义)

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

1 个答案:

答案 0 :(得分:0)

你可以通过设置路由重复模式来做到这一点,在"要求"上使用正则表达式。溃败的一部分,类似于:

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

通知:

你应该识别" categoriesAction"上的$ cat变量的斜杠。功能。

当然如果你想从非ascii字符制作动态分层URL并从持久化实体中创建这个URL我认为你可以通过从ascii实体字段创建URL来实现这一点,例如entity-id或其他entity-special-keys