螺栓重复路线

Bolt Repeating Route

是否可以在bolt cms中重复路由?我在我的 routing.yml 中创建了一条看起来像这样的路线

language:
    path: /{locale}/{slug}
    defaults: { _controller: controller.frontend:template, template: 'page.twig' }

它使用前端控制器上的模板函数呈现 page.twig。因此,当我以这种方式 page.twig 中转储变量时

{{ dump(app.request.get('locale')) }}
{{ dump(app.request.get('slug')) }}

这将输出。

"en"
"Whosebug"

但我想要一个像这样工作的重复路线。

language:
    path: /{locale}/{slug**}
    defaults: { _controller: controller.frontend:template, template: 'page.twig' }

所以当我访问一个 url 时:

bolt.dev/en/slug1/slug2

我将在我的视图中收到一个名为 slug 的数组,它将输出

[slug1, slug2]

Bolt 在后台使用 Symfony 路由,没有数组参数的概念。

您可以做的是在您的语言环境之后捕获整个 url,然后将其拆分到 Twig 中,因此:

language:
    path: /{locale}/{slug}
    defaults: 
        _controller: controller.frontend:template
        template: 'page.twig'
    requirements:
        slug: .+

这允许将斜线捕获为 slug 的一部分,因此假设您的 url 是 /en/slug1/slug2 然后执行 app.request.get('slug') 将 return slug1/slug2然后你可以在 Twig 中拆分:

{% for slug in app.request.get('slug')|split('/') %}
    {{ slug }}
{% endfor %}