我希望在Symfony2中设置一些路由,但我很难为文件夹设置动态路由。
我正在尝试设置接受以下内容的路线:/department/sub-department/sub-sub-department/product-url.html
从那条路线我需要的只是产品网址,剩下的就是搜索引擎优化。我遇到的问题是路由可能在URL中有许多部门级别,因此我需要忽略product-url之前的所有内容。
似乎“/”就是问题所在,所以有没有办法逃避斜线。
如果我不使用路由中的任何部门,我可以使用它:
product:
pattern: /{url}.html
defaults: { _controller: CompanyBundle:System:pageRequest }
所以,我基本上需要这样的东西:
product:
pattern: /{department}/{url}.html
defaults: { _controller: CompanyBundle:System:pageRequest }
{department}可以是一个或多个带正斜杠的部门。
这可能吗?
答案 0 :(得分:1)
在cookbook中有一篇关于它的好文章:
您必须通过指定更宽松的正则表达式模式明确允许/成为参数的一部分。
在您的情况下,路线定义必须是
product:
pattern: /{department}/{url}.html
defaults: { _controller: CompanyBundle:System:pageRequest }
requirements:
department: ".+"
答案 1 :(得分:1)
product:
pattern: /{url}.html
defaults: { _controller: CompanyBundle:System:pageRequest, department: ~ }
product_department:
pattern: /{department}/{url}.html
defaults: { _controller: CompanyBundle:System:pageRequest }
requirements:
department: '[\w\d\/\-]+'