带文件夹的Symfony2路由(包含多个正斜杠)

时间:2012-07-09 12:26:18

标签: symfony

我希望在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}可以是一个或多个带正斜杠的部门。

这可能吗?

2 个答案:

答案 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\/\-]+'