2012-09-06 33 views
3

我使用类别树的Tree学说的延伸和想有像路线:路由的类别树

/cat/subcat1/subcat2/subcat3 

我能做到这一点定义诸如

/{cat} 
/{cat}/{subcat} 
/{cat}/{subcat}/{subcat2) 
etc... 

但有路线一个更优雅和一般的方式来实现这个?一个可以接受无限数量级别的系统?

回答

7

你可以做的是在你的路由参数中接受斜线(仅限这条路由)。它涉及你不能排队任何其他参数如斜杠分隔符将被看作是类参数的一部分......

那么,如何管理一个路由参数斜线:

_hello: 
    pattern: /category/{category} 
    defaults: { _controller: AcmeDemoBundle:Demo:category } 
    requirements: 
     category: ".+" 

调用/category/cat1/sub1/sub2将'cat1/sub1/sub2'作为$ category参数调用DemoController::categoryAction($category)方法。只需使用您自己的代码来解码!

官方文档中找到代码示例:http://symfony.com/doc/2.0/cookbook/routing/slash_in_parameter.html

+0

精彩,很好的解决方案! –