【问题标题】:Symfony2 Routing with Folders (containing multiple forward slashes)Symfony2 文件夹路由(包含多个正斜杠)
【发布时间】:2012-07-09 12:26:18
【问题描述】:

我希望在 Symfony2 中设置一些路由,但我正在努力为文件夹设置动态路由。

我正在尝试设置接受以下内容的路线:/department/sub-department/sub-sub-department/product-url.html

从那条路线上,我只需要产品网址,其余的更多用于 SEO。我遇到的问题是一个路由可能在 URL 中有很多部门级别,所以我需要忽略 product-url 之前的所有内容。

似乎“/”是这里的问题,所以有没有办法避开斜线。

如果我不使用路由中的任何部门,我可以使用这个:

product:
    pattern:  /{url}.html
    defaults: { _controller: CompanyBundle:System:pageRequest }

所以,我基本上需要这样的东西:

product:
    pattern:  /{department}/{url}.html
    defaults: { _controller: CompanyBundle:System:pageRequest }

其中 {department} 可以是一个或多个带有正斜杠的部门。

这可能吗?

【问题讨论】:

  • 模式被解释为一个正则表达式,所以你可以把它写成一个正则表达式。

标签: symfony


【解决方案1】:

cookbook 上有一篇很好的文章:

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

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

product:
    pattern: /{department}/{url}.html
    defaults: { _controller: CompanyBundle:System:pageRequest }
    requirements:
        department: ".+"

【讨论】:

    【解决方案2】:
    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\/\-]+'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-10
      • 1970-01-01
      • 2014-06-22
      • 1970-01-01
      • 2018-03-30
      • 2011-05-15
      • 2021-12-27
      • 1970-01-01
      相关资源
      最近更新 更多