2012-09-06 32 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

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