螺栓重复路线

时间:2017-01-26 09:42:34

标签: php silex bolt-cms

是否有可能在螺栓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]

1 个答案:

答案 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 %}