Я использую расширение доктрины дерева для дерева категорий и хотел бы иметь такие маршруты, как:
/cat/subcat1/subcat2/subcat3
Я могу это сделать, определяя маршруты вроде
/{cat} /{cat}/{subcat} /{cat}/{subcat}/{subcat2) etc...
Но есть ли более элегантный и общий способ реализации этого? Система, которая может принимать неограниченное количество уровней?
Что вы можете сделать, это принять косые черты в параметрах маршрутизации (только для этого маршрута). Это связано с тем, что вы не можете ставить в очередь любой другой параметр, поскольку разделитель косой черты будет рассматриваться как часть параметра категории …
Итак, как управлять косой чертой в параметре маршрутизации:
_hello: pattern: /category/{category} defaults: { _controller: AcmeDemoBundle:Demo:category } requirements: category: ".+"
Calling /category/cat1/sub1/sub2
вызовет DemoController::categoryAction($category)
с 'cat1 / sub1 / sub2' в качестве параметра $ category. Просто используйте свой собственный код для декодирования!
Пример кода, найденный в официальном документе: http://symfony.com/doc/2.0/cookbook/routing/slash_in_parameter.html
Я думаю, что эти ссылки могут быть связаны:
https://github.com/symfony-cmf/RoutingBundle
Дерево категорий в URL-адресе