2017-01-26 21 views
1

Возможно ли иметь повторяющийся маршрут в болтах cms? Я сделал маршрут в моем routing.yml, который выглядит, как этоМаршрут повторения болтов

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

Это делает page.twig с помощью функции шаблона на контроллере Frontend. Поэтому, когда я сбрасываю переменные в своем 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' } 

Так что, когда я получить доступ к URL, как:

bolt.dev/en/slug1/slug2 

я получить массив на мой взгляд, по имени слизня и выведет

[slug1, slug2] 
+0

не используйте скриншот, чтобы ввести свой источник. Это не поиск. –

ответ

2

Болт использует маршрутизацию Symfony под капотом , и нет понятия параметров массива.

Что вы можете сделать, это захватить весь URL после вашей местности, а затем разделить его на Twig, так:

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

Это позволяет слэш быть захваченным как часть слизня, поэтому предполагается, что ваш URL является /en/slug1/slug2 то делать app.request.get('slug') возвратит slug1/slug2, которые затем можно разделить на Twig:

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