是否有可能在螺栓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"
"stackoverflow"
但我想要一条像这样的重复路线。
language:
path: /{locale}/{slug**}
defaults: { _controller: controller.frontend:template, template: 'page.twig' }
所以我访问的网址如下:
bolt.dev/en/slug1/slug2
我将在我的视图中收到一个名为slug的数组,它将输出
[slug1, slug2]
答案 0 :(得分:2)
Bolt在引擎盖下使用Symfony路由,并没有数组参数的概念。
你可以做的是捕获你的语言环境之后的整个网址,然后将其拆分为Twig,所以:
language:
path: /{locale}/{slug}
defaults:
_controller: controller.frontend:template
template: 'page.twig'
requirements:
slug: .+
这允许将斜杠作为slug的一部分捕获,因此假设您的网址为/en/slug1/slug2
,那么执行app.request.get('slug')
将返回slug1/slug2
,然后您可以在Twig中拆分:
{% for slug in app.request.get('slug')|split('/') %}
{{ slug }}
{% endfor %}