0

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

这有可能吗?

4

2 回答 2

1

食谱中有一篇很好的文章:

您必须通过指定更宽松的正则表达式模式来明确允许 / 成为参数的一部分。

在您的情况下,路线定义必须是

product:
    pattern: /{department}/{url}.html
    defaults: { _controller: CompanyBundle:System:pageRequest }
    requirements:
        department: ".+"
于 2012-07-09T12:30:38.093 回答
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\/\-]+'
于 2012-07-09T12:42:56.947 回答